Cake は、Ruby on Rails に基づいた PHP フレームワークです。 RoR と同様に、Cake もデータベース操作をカプセル化します。現時点では、Cake は成熟したフレームワークではありませんが、すでに注目に値します。
WAMP に Cake をインストールする方法は次のとおりです。
まずCakeをダウンロードします最新バージョン: cake_0.2.9.zip
解凍後、cakeconfigと入力し、database.php.defaultの名前をdatabase.phpに変更し、データベースのパラメータを設定します。例:
$DATABASE_CONFIG = array(
'devel' => array(
'host' => 'localhost',
'login' => 'user',
'password' => 'user ' ,
'database' => 'cake'
)
);
その後、Cake は Apache の mod_rewrite を使用し、Apache の /config/httpd.conf を開き、
#LoadModule rewrite_module modules/mod_rewrite.so
を削除する必要があります。 #
の前にある # 記号を削除し、
#AddModule mod_rewrite.c
の前にある # 記号を削除します。
次に、
ServerAdmin Easy@gmail.com
DocumentRoot "F:/cake/"
ServerNamecake.com
ErrorLog logs/cake.com.error_log
CustomLog などの仮想ホストを追加します。 logs /cake.my.com common
AllowOverride all
Order 許可、拒否
Allow from all
C で: ローカルホスト
127.0.0.1cake.com
の行をWINDOWSsystem32driversetchostsに追加し、Apacheとブラウザを再起動します。
現時点では、Cakeは正常に動作します。アプリケーションを作成しましょう:
データベースにテーブルを作成します
CREATE TABLE posts ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), body TEXT, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL);INSERT INTO posts (title,body,created) VALUES ('The title', 'This is the post body.', NOW());INSERT INTO posts (title,body,created) VALUES ('A title once again', 'And the post body follows.', NOW());INSERT INTO posts (title,body,created) VALUES ('Title strikes back', 'This is really exciting! Not.', NOW());
。
Cake是基于MVC模式的。创建一个应用时,我们先创建它的Model。
<PRE><SMALL>app/models/post.php</SMALL><?PHPclass Post extends AppModel {}?></p> <pre class="brush:php;toolbar:false">然后创建Control
<pre class="brush:php;toolbar:false"><pre class="brush:php;toolbar:false"><small>app/controllers/posts_controller.php</small><?PHPclass PostsController extends AppController {}?>
在其中加入index方法:
<pre class="brush:php;toolbar:false">app/controllers/posts_controller.php (fragment)function index () {}
最后创建view
<pre class="brush:php;toolbar:false"><small>app/views/posts/index.thtml</small><table><tr> <th>ID</th> <th>Title</th> <th>Created</th></tr><b><?PHP foreach ($this->post->find_all() as $post): ?></b><tr> <td><b><?=$post['id']?></b></td> <td><b><?=$this->link_for($post['title'], "/posts/view/{$post['id']}"?></b></td> <td><b><?=$post['created']?></b></td></tr><b><?PHP endforeach ?></b></table>