チュートリアル
ブログを作成する例を見ながら、以下を参考にちいたんフレームワークの何を、どのように使用するかを決定しましょう。
データベースを使う
現在ちいたんフレームワークはmysql, postgresql, textsqlに対応しています(その他にも柔軟に対応可能)。
チュートリアルではmysqlでの説明をします。データベースの初期化は、フレームワークによって呼ばれる関数config_databaseによって設定します。
以下に例を示します。どのファイルからも参照できるようにconfig.phpというコンフィグファイルを作成してそこに関数を書きます。
| config.php |
<?php
function config_database( &$db )
{
$db->add( "", "localhost", "user", "password", "dbname" );
}
?>
|
モデルを使う
モデルはテーブルを扱うクラスです。これを用意するだけでソースを書く必要が無くなります。試してみましょう。
まずブログ用に以下の様なテーブルを作成します。
CREATE TABLE `blog_data` (
`id` int(11) NOT NULL auto_increment,
`title` text NOT NULL,
`body` text NOT NULL,
`modified` timestamp NOT NULL
default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);
|
次にモデルを作成します。わかりやすいようにmodelsフォルダ内にでも入れておきましょう。
| models/blog_data.php |
<?php
class CBlog_data extends CModel
{
}
?>
|
あれ、何も書いてない…そうなんです。これだけでデータベースの読み書きが出来てしまいます。 どのように行うかは後のお楽しみ。びっくりするほど簡単です。では、このモデルを使用するために、config.php内にフレームワークから呼ばれる関数を追加しましょう。
| config.php追加分 |
function config_models( &$controller )
{
$controller->AddModel( dirname(__FILE__) . "/models/blog_data.php" );
}
|
ビューを使う
ビューは表示部分です。実際のHTMLを書きます。
HTMLを書くにはなんとこれだけの方法が用意されています。
- PHPファイルに直接書く
- smartyの用にPHPファイルとテンプレートを分ける(構文解析が無い分恐らく高速)
- 全ファイル共通のテンプレートを用意し、コンテンツ部分をPHPファイルに直接書く
- 全ファイル共通のテンプレートを用意し、PHPファイルとテンプレートを分ける
詳しくはマニュアルのビューにて解説しています。今回は4番目の全ファイル共通のテンプレートを用意し、
PHPファイルとテンプレートを分ける方法を使用します。
まず全ファイル共通テンプレートを用意しましょう。
| template.html |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<title>ちいたんブログ</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php print $this->content(); ?>
</body>
</html>
|
とまあ、こんなものでしょうか。DreamWeaverそのままですが。
今回の場合$this->content();のところに各ページのコンテンツが表示されます。
続いてブログを書き込むページを用意します。共通テンプレートを使用しているので中身だけです。
| add.html |
<form method="post" action="add.php">
タイトル<br>
<input type="text" name="blog/title"><br>
内容<br>
<textarea cols=40 rows=8 name="blog/body"></textarea><br>
<input type="submit" value="書き込み">
</form>
|
コントローラーを使う
コントローラーにより今まで作成したモデル、ビュー全てを連結し、動作させます。
ファイルは何の指定もなければビューの拡張子をphpに変えたものです。
まずは先ほどビューで作成したフォームにより、データを保存するプログラムがどれだけ少ないかご覧下さい。
| add.php |
<?php
require_once( "config.php" );
require_once( "cheetan.php" );
function action( &$c )
{
if( count( $_POST ) )
{
$c->blog_data->insert( $c->data["blog"] );
}
}
?>
|
blog_dataというモデルがここで使用されているのがおわかりでしょうか。 ビューでインプットの名前にblog/title等という変な名前を指定していたのは、
blog/で指定されているデータをコントローラ側で$data["blog"]の配列に 自動的に挿入するためでした。
こうやって必要なデータだけを配列に集め、insertします。
一覧表示
では書き込んだデータを一覧表示してみましょう。
| view.php |
<?php
require_once( "config.php" );
require_once( "cheetan.php" );
function action( &$c )
{
$c->set( "datas", $c->blog_data->find() );
}
?>
|
| view.html |
<?php foreach( $data["datas"] as $data ){ ?>
<table>
<tr>
<td><?php print $data["title"]; ?></td>
<td><?php print str_replace( "\n", "<br>", $data["body"] ); ?></td>
<td><?php print $data["modified"]; ?></td>
</tr>
</table>
<?php } ?>
|
このようにset関数によりビュー内で値を$dataとして参照することが出来ます。
データの編集
ではデータを編集してみましょう。
| edit.php |
<?php
require_once( "config.php" );
require_once( "cheetan.php" );
function action( &$c )
{
if( count( $_POST ) )
{
$c->blog_data->update( $c->data["blog"] );
}
$c->set( "data", $c->blog_data->find( "id=" . $_GET["id"] ) );
}
?>
|
| edit.html |
<form method="post" action="edit.php">
タイトル<br>
<input type="text" name="blog/title"
value="<?php print $data["data"]["title"]; ?>"><br>
内容<br>
<textarea cols=40 rows=6 name="blog/body">
<?php print $data["data"]["body"]; ?></textarea><br>
<input type="hidden" name="blog/id"
value="<?php print $data["data"]["id"]; ?>">
<input type="submit" value="更新">
</form>
|
データの削除
ではデータを削除してみましょう。もうある程度予想がつきますね。
| del.php |
<?php
require_once( "config.php" );
require_once( "cheetan.php" );
function action( &$c )
{
if( count( $_POST ) )
{
$c->blog_data->del( "id=" . $_POST["id"] );
}
$c->set( "data", $c->blog_data->find( "id=" . $_GET["id"] ) );
}
?>
|
| del.html |
<form method="post" action="edit.php">
削除してもよろしいですか?<br>
タイトル<br>
<?php print $data["data"]["title"]; ?><br>
内容<br>
<?php print $data["data"]["body"]; ?><br>
<input type="hidden" name="id" value="<?php print $data["data"]["id"]; ?>">
<input type="submit" value="削除">
</form>
|
まとめ
これで一通りブログっぽくなりました。このように非常に簡単にアプリケーションを作成することが出来ます。
もうフレームワークを使わないプログラムややモデルのないフレームワークなんて使う気になれませんよね?
大きなプログラムを作る時はCakePHP、小さなプログラムを作る時はちいたん。これが世界標準になるでしょう。(僕の)
ちいたんフレームワークにはもうちょっと便利な機能が用意されています。是非マニュアルを参考に色々と試してみてください。
サンプル
今回のチュートリアルを形にしたものはこちら
|