cakePHPはRORから
cakePHPは「Ruby on Rails」の流れを汲むフレームワークだ。はやっている言葉だから知ってはいたが、どういうものかはよく知らなかった(だって普通のレンタルサーバでRubyが使えるところなんてないから)。しかし最近諸々調べるにしたがって、かなりすばらしいツールであることがわかってきた。そのすばらしい点というのは「データベースにテーブルを作って、もとからあるクラスを継承しさえすれば(メソッドを何も書かずとも)ウェブアプリになってしまう」というところだ。そりゃ、こんなことができれば流行るわけだ。今日はそのことがわかった記念ということでちょっとメモ。
では、これをcakePHPで実現するには・・・ということになるのだが、まずは試してみた。
基本的にこのフレームワークはデータベース連携ありきだから、一例として本を管理するウェブアプリを作ることにする。最初は簡単なところで「書籍IDと本のタイトル」を管理することにする。
最初に書いてしまうと必要なのはデータベースのテーブル、モデルのクラス、コントローラーのクラスの3つだけでいい。表示とかは勝手にやってくれる。すごっ。
まずはテーブルの作成。cakePHPのルールの一つでテーブルのタイトルは英単語の複数形を使用するとのこと。その他クラスの命名規約等も考慮すれば、(いわゆるmojaviでいうところの)一つのモジュールを作るのにキーワードを一つ決めるのがよさそうだ。もちろん今回の場合は「book」になるだろう。で、テーブル名の話に戻るが、テーブル名は複数形を使用するらしい。だから必然的にここで利用するテーブルは「books」という名前になる。次にカラム名だが主キーは常に「id」という名前にしておく(ここでは書籍IDといったところか)。書籍名はまぁなんでもいいでしょう。これでテーブルはOK。ちなみに以下のSQLでテーブルを作成した。
create table books (id varchar(32) primary key,title text);
次にモデルを作成する。配置場所は(ドキュメントルート)/app/models/。ここにbook.phpという名前でモデル用のファイルを作成する。
<?php
class Book extends AppModel {
var $name = ‘Book';
}
?>
たったこれだけ(モデルは単数形で作る)。何にも考えなくていい。AppModelクラスを継承するだけでいい。あとクラス名の頭を大文字にしてることくらいか・・・。
次にコントローラー。こっちは複数形にする。配置場所は(ドキュメントルート)/app/controllers/。ファイル名はbooks_controller.phpとして以下の内容を記述する。
<?php
class BooksController extends AppController
{
var $scaffold;
var $name=’Books';
}
?>
こちらもたったこれだけ。唯一「$scaffold」というのがミソで、これを指定することによって、あらかじめcakePHP内で用意されているデータの一覧表示、追加、修正、削除機能をそのまま利用できるようになるとのことだ。
で、実際にアクセスする際には以下のURLをたたく(ここは複数形)。
http://(サーバ名)/books
たったこれだけ。これだけで最低限のウェブアプリが出来てしまう。普通はなかなか、このまま使うのは難しいかもしれないけど、なんらかの管理画面なら結構このまま使えてしまうはず。
サンプルアプリの勉強は、この$scaffoldからはじめるのがよさそうだ。ちなみにこの言葉の意味は「足場、断頭台」。う〜む。なんかいいネーミングだね。