書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
FuelPHPで画面を表示する/DBを利用する
FuelPHPが提供する「HTMLを生成するのに便利なメソッド」や「DBの利用時にSQLを記述せずにCRUD操作が行えるクラス」について解説する。書籍転載の6本目(書籍内の番号は「97」)。
書籍転載について
ご注意
本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどはBuild Insiderのそれとは一致しません。あらかじめご了承ください。
FuelPHPでは、HTMLを生成するのに便利なメソッドが数多く用意されています。DBの利用時にも、SQLを記述せずにCRUD (Create Retrieve Update Delete) 操作を行うことのできるクラス/メソッドが用意されています。
- 名称: FuelPHP
- URL: http://fuelphp.com/
- インストール方法: curl get.fuelphp.com/oil | sh
View
ViewはAPPPATH/viewsに配置します。
Controllerのメソッドから呼ばれる名前にします。プログラムではないので、クラス名やメソッドは不要です。基本的にControllerから受け取った引数をHTML内に表示するだけで、プログラム的な処理は行いません。View内では、特定のHTML要素を表示する補助的なクラスを利用することができます。
リスト97-1は、“sample/form”の名前で呼ばれるViewのテンプレートです。
// 1バリデーションでエラーになった場合のメッセージを表示
<?php if (isset($errors)): ?>
<ul>
<?php foreach ($errors as $error): ?>
<li><?php echo $error ?></li>
<?php endforeach ?>
</ul>
<?php endif ?>
// 2フォーム定義
<?php echo Form::open("sample/save") ?> // 送信先
お名前:<?php echo Form::input('name', Input::post('name')) ?><br /> // 各項目の入力欄
mail:<?php echo Form::input('email', Input::post('email'), array('required' => 'required')) ?><br /> // HTML5のエラーチップを出す場合
年齢:<?php echo Form::input('age', Input::post('age')) ?><br />
<?php echo Form::submit('submit_btn', '送信') ?> // 送信ボタン
<?php echo Form::close() ?>
|
バリデーションでエラーとなった場合のエラーメッセージを表示します(1)。変数$errors内に複数のセットで渡されますので、$errorsが存在する場合にforeachで回して1つひとつ表示します。
フォームの定義は、Formクラスで行います(2)。openメソッドでフォームの送信先、inputメソッドで入力欄、submitメソッドで送信ボタンを生成します。
inputメソッドの第3引数には、HTML5のフォーム機能を利用する属性を指定できます。requiredを指定すると、フォーム送信時に空欄だとエラーチップを表示します(図97-1)。HTML5の機能を標準で使えるメソッドがあることは、FuelPHPの特徴の1つです。
Model
ModelはAPPPATH/classes/modelに配置します。Modelは、オブジェクトとデータベースの情報を対応させるO/RマッピングクラスのModel_Crudクラスを継承します。Model_Crudクラスは、その名前のとおり、レコードの作成(create)、更新(update)、削除(delete)を行います。このクラスを継承するため、それらのメソッドはModelのソースコードに記述しません。記述するのは、テーブルの名前とプライマリキーのみです。
リスト97-2は、usersテーブル(リスト97-3)に対するModelです。ソースコードに記述するのはusersテーブルのテーブル名、プライマリキーのみです。
class Model_User extends \Model_Crud {
//テーブル名とプライマリキーを指定
protected static $_table_name = 'users';
protected static $_primary_key = 'id';
}
|
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`email` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
)
|
ViewModel
ViewModelはAPPPATH/classes/viewに配置し、Controllerに書くべきではない表示の補助的な処理を行います。ControllerとViewと違って、利用する必要がない場合は、利用しなくてよいクラスです。
リスト97-4~97-6は、usersテーブルからidが1のものを取得するViewModelの例です。ViewModelクラスを継承してクラス定義を行います(1)。クラス名とディレクトリ/ファイル名の関係は「/」を「_」に置き換える命名規則です。
// 1クラス定義
class View_Sample_Member extends ViewModel{
// 2Viewに渡すメソッド
public function view(){
$this->user = Model_User::find_by_pk(1); // idが1のレコードを取得して変数に格納
}
}
|
<body>
// 3ViewModelから渡された変数にアクセス
<?php echo $user->name; ?>
</body>
|
public function action_member(){
// 4ViewModelを取得
$viewmodel = ViewModel::forge('sample/member');
return Response::forge($viewmodel);
}
|
Viewに変数を渡す処理は、viewメソッドをオーバーライドして記述します(2)。Viewでは、ViewModelから渡された変数に「$this」を外してアクセスできます(3)。Controllerでは、ModelViewを取得してResponseクラスに渡します(4)。
※以下では、本稿の前後を合わせて5回分(第4回~第8回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
4. CakePHPのモデルとビューを利用する
CakePHPのモデルを定義して、ビューと組み合わせる方法を説明。また、Formヘルパーを使って入力チェックなどを行う方法も解説する。書籍転載の4本目(書籍内の番号は「95」)。
5. 高速で軽量なフレームワークFuelPHPを使う
高度なWebアプリ開発に向いている、高速で軽量なフレームワーク「FuelPHP」の基本的な使い方を説明する。書籍転載の5本目(書籍内の番号は「96」)。
6. 【現在、表示中】≫ FuelPHPで画面を表示する/DBを利用する
FuelPHPが提供する「HTMLを生成するのに便利なメソッド」や「DBの利用時にSQLを記述せずにCRUD操作が行えるクラス」について解説する。書籍転載の6本目(書籍内の番号は「97」)。
8. 表組みや画像/ハイパーリンク付きのPDFを作成する(FPDF)
FPDF(PDF_Japanese)クラスのメソッドを利用したさまざまな表現――文字列の装飾や画像の貼り付け、リンクの設置、表組みなどについて説明する。書籍転載の8本目(書籍内の番号は「30」)。