concrete5デザインカスタマイズに必要なPHPの知識

1,780
-1

Published on

第27回concrete5大阪勉強会

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,780
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
12
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

concrete5デザインカスタマイズに必要なPHPの知識

  1. 1. concrete5デザインカスタマイズに 必要なPHP 第27回concrete5大阪勉強会
  2. 2. 注)分かりやすさ優先で資料を作っています   用語は正確でない場合がありますのでご了承ください
  3. 3. concrete5では、テーマやブロックテン プレートを作成する際、プログラミング の知識はほとんど必要ありません。
  4. 4. concrete5は、MVCという考え方に基 づいて設計されています。 モデル(M): データベースからの情報 の出し入れや処理を担当 ビュー(V): データを画面に表示 コントローラー(C): MとVの間を取り 持つ係
  5. 5. デザインカスタマイズを行なう際は、 ビュー(View)だけ触ればOK ! (プログラミングの知識が必要になるM やCは、基本的に触らなくていい)
  6. 6. concrete5デザインカスタマイズに 必要なPHP ! =
  7. 7. どんなPHP?
  8. 8. <?php
 $a = new Area( Main );
 $a->display($c);
 ?>
  9. 9. $c = Page::getCurrentPage();
 $title = $c->getCollectionName(); $th = Loader::helper( text ); echo $th->entities($title);
  10. 10. <?php
 $ih = Loader::helper( image );
 foreach ($pages as $page): $img = $page->getAttribute( page_thumbnail ); $thumb = $ih->getThumbnail($img, 64, 9999, false); ?> <img src="<?php echo $thumb->src ?>" width="<?php echo $thumb->width ?>" height="<?php echo $thumb->height ?>" alt="" /> <?php endforeach; ?>
  11. 11. 難しそうやないか!
 (╯ □ )╯︵ ┻━┻ ! ひとつひとつ見て行きましょう!
  12. 12. 超基本編
 ̶ まずはここから。
  13. 13. PHP •開始タグ <?php •終了タグ ?> •HTMLの中にプログラムを埋め込む
 = 開始タグと終了タグの間がPHP •PHPだけのファイルの場合は、終了タ グを書かない
  14. 14. コメント •処理されないメモ書き •単一行
 // で始まり改行するまでがコメント •複数行
 /* ではじまり
 改行を挟んでもコメントのまま
 コメントの終了は */
  15. 15. コメント •複数行コメントは、中間の行がコメン トかどうか分かりにくくなるため、慣 例的に中間の行の先頭にも * が書かれ ることが多い
 
 /*
 * コメント
 */
  16. 16. 代入 •左辺に右辺の値(実行結果)を設定 •$text = Hello ; // 文字列を代入
 echo $text; // 画面に出力 Hello •$sum = 5 + 3; // 右辺の実行結果を 代入(8) •$a = new Area( Main );
 // Areaクラスのインスタンスを代入
  17. 17. 変数 •データを一時的に保存し再利用するた めのしくみ •$text = Hello ; •この場合 $text が変数 •$ で始まる名前をつけることができる •echo $text; // は
 echo Hello ; // と同じ結果になる
  18. 18. 関数と引数 •PHPで行なえる処理 : 関数 •関数に渡すパラメーター : 引数 •書き方 : 関数(引数)
  19. 19. 関数と引数 •$text = concrete5
 osaka ;
 $text = nl2br($text); // 改行をbrタ グに変換する関数
 echo $text; •結果は
 concrete5<br />
 osaka
  20. 20. クラス編 ̶ ちょっと難しいけど重要な概念
  21. 21. オブジェクト指向プログラミング •システムをオブジェクトの集合体として とらえる手法 •オブジェクト : システムを構成する概念 •オブジェクトは、それ自身が自分が何者 であるか、何をすべきかを知っている
  22. 22. concrete5 •ページ •エリア •ブロック •ユーザー •ファイル
  23. 23. クラス = •オブジェクトの種類を定義 •オブジェクトがどんなデータを持てる かを定義 = プロパティ •オブジェクトで何ができるかを定義
 = メソッド
  24. 24. クラスの例 •プロパティー
 $cID : 各ページごとの固有なID
  25. 25. クラスの例 •メソッド
 自分自身に対する情報 getCollectionName() : ページ名を取得
 isEditMode() : ページが編集モードか
 自分自身に対する操作
 add() : ページを追加
 delete() : ページを削除
  26. 26. インスタンス •クラスはあくまで設計図。設計図をも とに実体を作成する必要がある •クラスをもとに作成したオブジェクト の実体をインスタンスと呼ぶ •class Area エリアの設計図 •$a = new Area( Main );
 Main を引数として、設計図を元に Main エリアのインスタンスを作成
  27. 27. class Page ホーム ページ 概要 ページ お問い合わせ ページ インスタンス(実体) クラス(設計図)
  28. 28. インスタンス •インスタンス内のプロパティーやメソッ ドにアクセスするには、アロー演算子
 (->)を使う •$a = new Area( Main );
 $a->display($c); •Areaクラスのdisplayメソッドを実行 •引数は $c(Pageクラスのインスタンス)
  29. 29. new •$c = Page::getCurrentPage(); •getCurrentPage() はメソッド •-> を使う場合はインスタンス(実体) が持つメソッド •:: を使う場合はクラス(設計図)自身 が持つ特殊なメソッド •スコープ定義演算子(ダブルコロン)
  30. 30. new •$c = Page::getCurrentPage(); •Pageクラスの設計図に、現在見てい るページのインスタンスを取得すると いうメソッドが定義されている •他に
 Page::getByID($cID);
 Page::getByPath( /about );
 など。クラスによって違う
  31. 31. 静的メソッド •:: を使う、インスタンス化しなくても 使える、クラス自体(設計図)が持っ ているメソッドを静的な(static)メ ソッドと呼ぶ
  32. 32. 復習(1)
  33. 33. <?php // テーマ内でエリアを表示するのに使うコード
 $a = new Area( Main );
 $a->display($c);
 ?>
  34. 34. <?php // 変数 $a に Area クラスのインスタンスを代入 // 引数は Main 
 $a = new Area( Main ); // Area クラスのメソッド display() を実行 // 引数は $c(Pageクラスのインスタンス)
 $a->display($c);
 ?>
  35. 35. <?php // 応用例 // 概要ページ(about)のインスタンスを取得
 $aboutPage = Page::getByPath( /about ); // Main エリアのインスタンスを取得
 $a = new Area( Main ); // 概要ページのMainエリアの内容を表示
 $a->display($aboutPage);
 ?>
  36. 36. // 応用例その2 // 現在見ているページのタイトルを表示 $c = Page::getCurrentPage();
 $title = $c->getCollectionName(); $th = Loader::helper( text ); echo $th->entities($title);
  37. 37. // Pageクラスの静的メソッドを使い、現在見ているページ のインスタンスを取得 $c = Page::getCurrentPage(); // Pageクラスのインスタンスのメソッドを使い、ページ名 を取得して変数に代入
 $title = $c->getCollectionName(); // textヘルパーの取得(Loaderクラスを使う) $th = Loader::helper( text ); // セキュリティ対策メソッド entities() を利用してページ名 を表示 echo $th->entities($title);
  38. 38. 制御編 ̶ 条件分岐、ループ
  39. 39. 条件分岐 : if •if ($foo == foo ) {
 // 条件に合致する時
 } else {
 // 条件に合致しない時
 } •単に if ($foo) で値が空ではないとき
  40. 40. ループ : foreach •複数のデータを順番に処理する •ページリストブロックの場合
 foreach ($pages as $page) :
 /* 変数 $pages に表示するページの
 * インスタンスが複数入っている
 * 変数 $page に順番に代入される
 */
 endforeach;
  41. 41. ループ : foreach •そもそも $pages はいつ作成される? •→ コントローラー(C)の領域なので、 デザインカスタマイズの際は気にしな いでOK
  42. 42. if と foreach 以外にもたくさんありますが デザインカスタマイズでは使いません
  43. 43. 復習(2)
  44. 44. <?php // ページリストブロックのview.phpからの抜粋
 $ih = Loader::helper( image );
 foreach ($pages as $page): $img = $page->getAttribute( page_thumbnail ); $thumb = $ih->getThumbnail($img, 64, 9999, false); ?> <img src="<?php echo $thumb->src ?>" width="<?php echo $thumb->width ?>" height="<?php echo $thumb->height ?>" alt="" /> <?php endforeach; ?>
  45. 45. <?php
 // imageヘルパーを取得
 $ih = Loader::helper( image );
 // foreach文でループしている
 foreach ($pages as $page):
 // 変数 $page に代入されている Page クラスの
 // インスタンスの getAttribute() メソッドを使って
 // page_thumbnail というハンドルのページ属性を取得 $img = $page->getAttribute( page_thumbnail ); // imageヘルパーのメソッドを使い、
 // 幅64pxにリサイズした画像のサムネイルを取得 $thumb = $ih->getThumbnail($img, 64, 9999, false);
  46. 46. // 続き
 $thumb = $ih->getThumbnail($img, 64, 9999, false);
 /* 
 * 変数 $thumb に代入されたオブジェクトから、画像の
 * URL、幅、高さのプロパティを echo で表示している
 */
 ?> <img src="<?php echo $thumb->src ?>" width="<?php echo $thumb->width ?>" height="<?php echo $thumb->height ?>" alt="" /> <?php endforeach; ?>
  47. 47. 時々出てきた「ヘルパー」という用語は PHPの用語ではなくconcrete5で使う用語です。 説明は省きましたが詳細はブログ記事 「デザイナーさんも必見、concrete5の ヘルパーの使い方まとめ」 を見てみてください! http://notnil-creative.com/blog/archives/2866
  48. 48. concrete5のクラスがどんなメソッドを持ってい るかは、API検索、または開発者ドキュメントで調 べることができます(和訳協力者絶賛募集中) http://www.concrete5.org/api/ http://www.concrete5.org/documentation/ developers/
  49. 49. 今日ご紹介した話や用語は、覚えてなく ても特に支障ありません。 ! そういう仕組みなのか∼と思って忘れて ください
 (:D)¦ ̄¦_
  50. 50. おしまい

×