Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CakePHP入門 (2006/2/25)

Yusuke Ando
February 25, 2006

CakePHP入門 (2006/2/25)

アーカイブです。
第9回PHP勉強会。

Yusuke Ando

February 25, 2006
Tweet

More Decks by Yusuke Ando

Other Decks in Programming

Transcript

  1. Copyright © YusukeAndo. 2006. All rights reserved. 1 CakePHP入門 PHPでRailsライクな高速開発

    PHP勉強会 第9回発表資料 2006年2月25日 安藤祐介
  2. Copyright © YusukeAndo. 2006. All rights reserved. 2 はじめに 巷で話題の“Ruby

     On  Rails” !  Rubyで実装されたMVCフレームワーク !  同じ事を繰り返さない -  Don’t  Repeat  Yourself !  設定よりも規約  -  Convention  over  Configuration   !  ActiveRecordによりコードを書かずにDB機能 !  「高速」開発。(プロトタイプ、改修、運用) →注目度が上昇中 10分で作るRailsアプリ  for  Windows などの試みが注目されたり・・・  
  3. Copyright © YusukeAndo. 2006. All rights reserved. 3 そして Ruby

     On  RailsのPHP版とも言えるのが・・・ (正確にはRailsライクなフレームワークの中の1つ) なのです
  4. Copyright © YusukeAndo. 2006. All rights reserved. 4 CakePHPの特徴 !

     フロントコントローラー、MVCモデル !  設定不要、サブディレクトリのみで動作可能 !  アクティブレコード、組込みのCRUD !  PHP4、PHP5両対応 「あらゆるレベルのプログラマーにとって快適な環境を」 CakePHP  development  team
  5. Copyright © YusukeAndo. 2006. All rights reserved. 5 おおまかな構造 アプリケーションのルート

    フレームワークのライブラリ 設定ファイル コントローラー モデル ビュー(テンプレート) →以上の構造で丸ごと設置する為、共用型サーバでも容易。
  6. Copyright © YusukeAndo. 2006. All rights reserved. 7 アーカイブの入手 !

     cakephp.orgからアーカイブを入手。 ここです。
  7. Copyright © YusukeAndo. 2006. All rights reserved. 8 セットアップ !

     展開して出来たディレクトリを任意にリネーム !  Apacheから見える所にがっつりと設置 !  あとはindex.phpにアクセスすれば動作完了 ※htaccessによるoverride、rewriteが出来るようにしておく  Rewriteが使えない場合はcore.php内の設定を修正
  8. Copyright © YusukeAndo. 2006. All rights reserved. 10 データベース接続設定 !

     データベースへの接続設定を行う !  app/config/database.php  に設定を記入 !  ひな型をコピーすると簡単  var  $default  =  array('driver'        =>  'mysql',                                                  'connect'    =>  'mysql_pconnect',                                                  ‘host’          =>  ‘localhost’,     ホスト名                                                  ‘login’        =>  ‘user’,        ユーザ名                                                  ‘password’  =>  ‘password’,   パスワード                                                  ‘database’  =>  ‘project_name’, DB名                                                  'prefix'        =>  '');
  9. Copyright © YusukeAndo. 2006. All rights reserved. 12 テーブル作成 !

     データベースにアプリで利用するテーブルを作成 !  一定のネーミングルールで作成(必須!) ネーミングルール !  テーブル名は複数形英語 (books  toys  musics  …) !  プライマリキーは“id”とする !  外部キーは“genre_id”  “book_id”  のように単数_id  とする !  “created”  “modified”というDATETIMEを作るとベター
  10. Copyright © YusukeAndo. 2006. All rights reserved. 14 コントローラー作成 /books

     にアクセスするとコントローラーが見つからないエラーが・・・ !   エラー画面で指示されたとおりにクラスを作成  app/controllers/%name%_controller.php  <?php        class  BooksController  extends  AppController        {        } ?>
  11. Copyright © YusukeAndo. 2006. All rights reserved. 15 モデル作成 今度はモデルが見つからないらしい・・・

    !  AppModelの派生クラスを作成      app/models/%name%.php <?php class  book  extends  AppModel  { } ?>
  12. Copyright © YusukeAndo. 2006. All rights reserved. 17 scaffoldの利用 メソッドが無いといわれたが・・・?

    !  現段階ではロジックを実装するindex()  メソッド等が無い !  Railsにもあるアプリの「骨組み」を提供する機能 !  コントローラーをscaffold指定すれば「骨組み」が利用可能 <?php        class  BooksController  extends  AppController        {                var  $scaffold;          } ?>
  13. Copyright © YusukeAndo. 2006. All rights reserved. 18 動作確認 !

     組込みのCRUDが利用可能です !  Create  Read  Update  Delete  の機能 !  マスタのメンテナンス程度であれば十分 !  カラム追加などにも自動で追随する
  14. Copyright © YusukeAndo. 2006. All rights reserved. 21 カスタマイズ !

     組込みのCRUDも便利は便利・・・ !  でもユーザ向けの表示は細かい指定が必要 !  コントローラーを修正し、テンプレートを作ればOK !  scaffoldとの共存もできる
  15. Copyright © YusukeAndo. 2006. All rights reserved. 22 コントローラーの修正 !

     app/controllers/%name%_controller.phpにindexメソッド を追加する <?php        class  BooksController  extends  AppController        {                var  $scaffold;                  function  index(){                        $this->set('data',$this->book->findAll());                }        } ?>
  16. Copyright © YusukeAndo. 2006. All rights reserved. 23 テンプレートの作成 !

     app/views/%name%/index.thtml  を作成 !  Controllerでsetした名前でハッシュがある <table> <tr><th>書名</th><th>登録日</th></tr> <?php  foreach  ($data  as  $row):    ?> <tr> <td><?php  echo  $row['book']['title'];?></td> <td><?php  echo  $row['book']['created'];?></td> </tr> <?php  endforeach;  ?> </table>
  17. Copyright © YusukeAndo. 2006. All rights reserved. 24 カスタマイズの確認 !

     カスタマイズした表示ができました !  scaffoldの機能もURLを叩けば動く(リンクすれば良い) !  リレーションも使えます
  18. Copyright © YusukeAndo. 2006. All rights reserved. 26 まとめ !

     メリット   簡単セットアップ、スクリプト的な記述   validate、セッション管理も組み込まれている !  デメリット   情報が少ない、マルチバイト関連のノウハウ   習得コストは無いとは言えない
  19. Copyright © YusukeAndo. 2006. All rights reserved. 27 Let‘s Bake! CakePHPなかなか面白そうなフレームワークです。

    小回りが利きそうな開発でなら十分に威力を発揮 するのではないでしょうか? 皆さんも今日からBakerです!
  20. Copyright © YusukeAndo. 2006. All rights reserved. 28 謝辞 参考サイト

    !  10分で作るCakePHPアプリ  for  Windows http://p4life.jp/cake/