Cakephp
Transcript of Cakephp
Copyright © YusukeAndo. 2006. All rights reserved. 1
CakePHP入門
PHPでRailsライクな高速開発
PHP勉強会 第9回発表資料
2006年2月25日 安藤祐介
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
などの試みが注目されたり・・・
Copyright © YusukeAndo. 2006. All rights reserved. 3
そして
Ruby On RailsのPHP版とも言えるのが・・・
(正確にはRailsライクなフレームワークの中の1つ)
なのです
Copyright © YusukeAndo. 2006. All rights reserved. 4
CakePHPの特徴
フロントコントローラー、MVCモデル
設定不要、サブディレクトリのみで動作可能
アクティブレコード、組込みのCRUD
PHP4、PHP5両対応
「あらゆるレベルのプログラマーにとって快適な環境を」
CakePHP development team
Copyright © YusukeAndo. 2006. All rights reserved. 5
おおまかな構造
アプリケーションのルート
フレームワークのライブラリ
設定ファイル
コントローラー
モデル
ビュー(テンプレート)
→以上の構造で丸ごと設置する為、共用型サーバでも容易。
Copyright © YusukeAndo. 2006. All rights reserved. 6
動作の手順
実際に動かしながら触ってみましょう!
Copyright © YusukeAndo. 2006. All rights reserved. 7
アーカイブの入手
cakephp.orgからアーカイブを入手。
ここです。
Copyright © YusukeAndo. 2006. All rights reserved. 8
セットアップ
展開して出来たディレクトリを任意にリネーム
Apacheから見える所にがっつりと設置
あとはindex.phpにアクセスすれば動作完了
※htaccessによるoverride、rewriteが出来るようにしておく
Rewriteが使えない場合はcore.php内の設定を修正
Copyright © YusukeAndo. 2006. All rights reserved. 9
画面イメージ
データベース設定が無い警告
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' => '');
Copyright © YusukeAndo. 2006. All rights reserved. 11
画面イメージ
データベース接続成功
Copyright © YusukeAndo. 2006. All rights reserved. 12
テーブル作成
データベースにアプリで利用するテーブルを作成
一定のネーミングルールで作成(必須!)
ネーミングルール
テーブル名は複数形英語 (books toys musics …)
プライマリキーは“id”とする
外部キーは“genre_id” “book_id” のように単数_id とする
“created” “modified”というDATETIMEを作るとベター
Copyright © YusukeAndo. 2006. All rights reserved. 13
画面イメージ
コントローラーが無い
作るべきコード
Copyright © YusukeAndo. 2006. All rights reserved. 14
コントローラー作成
/books にアクセスするとコントローラーが見つからないエラーが・・・
エラー画面で指示されたとおりにクラスを作成
app/controllers/%name%_controller.php
<?php
class BooksController extends AppController
{
}
?>
Copyright © YusukeAndo. 2006. All rights reserved. 15
モデル作成
今度はモデルが見つからないらしい・・・
AppModelの派生クラスを作成
app/models/%name%.php
<?php
class book extends AppModel {
}
?>
Copyright © YusukeAndo. 2006. All rights reserved. 16
画面イメージ
メソッドが無い
Copyright © YusukeAndo. 2006. All rights reserved. 17
scaffoldの利用
メソッドが無いといわれたが・・・?
現段階ではロジックを実装するindex() メソッド等が無い
Railsにもあるアプリの「骨組み」を提供する機能
コントローラーをscaffold指定すれば「骨組み」が利用可能
<?php
class BooksController extends AppController
{
var $scaffold;
}
?>
Copyright © YusukeAndo. 2006. All rights reserved. 18
動作確認
組込みのCRUDが利用可能です
Create Read Update Delete の機能
マスタのメンテナンス程度であれば十分
カラム追加などにも自動で追随する
Copyright © YusukeAndo. 2006. All rights reserved. 19
入力画面
カラムの型に応じた入力欄を生成
Copyright © YusukeAndo. 2006. All rights reserved. 20
単票形式での表示
Copyright © YusukeAndo. 2006. All rights reserved. 21
カスタマイズ
組込みのCRUDも便利は便利・・・
でもユーザ向けの表示は細かい指定が必要
コントローラーを修正し、テンプレートを作ればOK
scaffoldとの共存もできる
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());
}
}
?>
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>
Copyright © YusukeAndo. 2006. All rights reserved. 24
カスタマイズの確認
カスタマイズした表示ができました
scaffoldの機能もURLを叩けば動く(リンクすれば良い)
リレーションも使えます
Copyright © YusukeAndo. 2006. All rights reserved. 25
画面イメージ
モデルに2行程度の修正
で従属データも取得
Copyright © YusukeAndo. 2006. All rights reserved. 26
まとめ
メリット
簡単セットアップ、スクリプト的な記述
validate、セッション管理も組み込まれている
デメリット
情報が少ない、マルチバイト関連のノウハウ
習得コストは無いとは言えない
Copyright © YusukeAndo. 2006. All rights reserved. 27
Let‘s Bake!
CakePHPなかなか面白そうなフレームワークです。
小回りが利きそうな開発でなら十分に威力を発揮
するのではないでしょうか?
皆さんも今日からBakerです!
Copyright © YusukeAndo. 2006. All rights reserved. 28
謝辞
参考サイト
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
Copyright © YusukeAndo. 2006. All rights reserved. 29
質疑応答
ご静聴ありがとうございました。