初心者がCakePHPに関して少しづつですが学習を進めています。
インストールを終え、次に公式サイトのプログチュートリアルに進みます。
付録 A. Cake ブログチュートリアル
手順通りに進めて雰囲気を感じる。
ぬー、オブジェクト指向は手続き型に慣れた身には難解。
以下ブログチュートリアルのまとめ。
●CakePHPには「規約」と呼ばれるいくつかの決め事がある。
テーブル構造から変数、ファイル名まで色々と決まりがある。
(それに準じて書くとCakePHPを最大限活用できる)
付録 C. Cake 規約
●CakePHPはMVCモデルである。
プログラムが、データ形式のModelと、見た目のViewと、動作のControllerに完全に分離している。
チュートリアル「ブログ・プログラムを作ろう」
・DB:”blog”を作成(DBの名前は自由)
・テーブル:“posts”(複数形。なんとyをiに変えてesの変則複数形も可)
・構造:‘id’、‘modified’(編集時刻)、‘created’(作成時刻)フィールド推奨。
Model(モデル)をつくる。
/app/models/post.php
postsテーブルのモデルなのでpost.php(単数形)。
値のバリデーションなどを記述する。
//postsテーブルのモデルは単数形で頭文字は大文字。
class Post extends AppModel
{
var $name = 'Post';
}
Controller(コントローラー)をつくる
/app/controllers/posts_controller.php
postsテーブルのcontrollerなのでposts_controller.php(アンダーバー必須)。
動作に関するfunctionを記述する。
//postsテーブルのコントローラーは複数形の頭文字は大文字。
View(ビュー)をつくる
class PostsController extends AppController
{
var $name = 'Posts';
function index()
{
//$postsにPostモデルのfindAll()の結果をセット
$this->set('posts', $this->Post->findAll());
}
}
/app/views/posts/index.thtml
postsテーブルのviewなのでpostsフォルダに保存し、ファイル名をアクション名にして、拡張子はthtml(CakePHP1.2以降は"ctp")。
中身は普通のPHP。
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td>
<?php echo $html->link($post['Post']['title'], "/posts/view/".$post['Post']['id']); ?>
</td>
<td><?php echo $post['Post']['created']; ?></td>
</tr>
<?php endforeach; ?>
実際に表示してみる
CakePHPはURLでメソッドを指定する。
http://localhost/コントローラ名/メソッド名/パラメータ1/パラメータ2/
チュートリアルのindexメソッドは下記のように呼び出す。
http://www.example.com/posts/index/
パラメーターのある例
http://localhost/users/view/3
以上でブログチュートリアル。
実は1回目にさらっと読んだだけではよくわからず、下記を見てから再度チュートリアルをやった。
連載:CakePHPで高速Webアプリ開発|gihyo.jp … 技術評論社
参考
"Blog チュートリアルにつまずいたら" フォーラム - CakePHP Users in Japan
(つまずいたら、というよりも補足事項たくさん)
PapuhなWEBLOG - CakePHPとデータベース データベースの準備
(命名規約について)
コメント