Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
書籍転載:PHPライブラリ&サンプル実践活用[厳選100]

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]

FuelPHPで画面を表示する/DBを利用する

2014年8月12日

FuelPHPが提供する「HTMLを生成するのに便利なメソッド」や「DBの利用時にSQLを記述せずにCRUD操作が行えるクラス」について解説する。書籍転載の6本目(書籍内の番号は「97」)。

WINGSプロジェクト 片渕 彼富
  • このエントリーをはてなブックマークに追加

書籍転載について

 本コーナーは、技術評論社発行の書籍『PHPライブラリ&サンプル実践活用[厳選100]』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。

 

 『PHPライブラリ&サンプル実践活用[厳選100]』の詳細や購入は技術評論社のサイト目次ページをご覧ください。

ご注意

 本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどは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のテンプレートです。

PHP
// 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() ?>
リスト97-1 APPPATH/views/sample/form.php

 バリデーションでエラーとなった場合のエラーメッセージを表示します(1)。変数$errors内に複数のセットで渡されますので、$errorsが存在する場合にforeachで回して1つひとつ表示します。

 フォームの定義は、Formクラスで行います(2)。openメソッドでフォームの送信先、inputメソッドで入力欄、submitメソッドで送信ボタンを生成します。

 inputメソッドの第3引数には、HTML5のフォーム機能を利用する属性を指定できます。requiredを指定すると、フォーム送信時に空欄だとエラーチップを表示します(図97-1)。HTML5の機能を標準で使えるメソッドがあることは、FuelPHPの特徴の1つです。

図97-1 生成した入力画面でのエラーチップ表示

図97-1 生成した入力画面でのエラーチップ表示

Model

 ModelはAPPPATH/classes/modelに配置します。Modelは、オブジェクトとデータベースの情報を対応させるO/RマッピングクラスのModel_Crudクラスを継承します。Model_Crudクラスは、その名前のとおり、レコードの作成(create)、更新(update)、削除(delete)を行います。このクラスを継承するため、それらのメソッドはModelのソースコードに記述しません。記述するのは、テーブルの名前とプライマリキーのみです。

 リスト97-2は、usersテーブル(リスト97-3)に対するModelです。ソースコードに記述するのはusersテーブルのテーブル名、プライマリキーのみです。

PHP
class Model_User extends \Model_Crud {
  //テーブル名とプライマリキーを指定
  protected static $_table_name = 'users';
  protected static $_primary_key = 'id';
}
リスト97-2 ModelはAPPPATH/classes/model/user.php
SQL
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  `email` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`id`)
)
リスト97-3 usersテーブルの定義

ViewModel

 ViewModelはAPPPATH/classes/viewに配置し、Controllerに書くべきではない表示の補助的な処理を行います。ControllerとViewと違って、利用する必要がない場合は、利用しなくてよいクラスです。

 リスト97-4~97-6は、usersテーブルからidが1のものを取得するViewModelの例です。ViewModelクラスを継承してクラス定義を行います(1)。クラス名とディレクトリ/ファイル名の関係は「/」を「_」に置き換える命名規則です。

PHP
// 1クラス定義
class View_Sample_Member extends ViewModel{
  // 2Viewに渡すメソッド
  public function view(){
    $this->user = Model_User::find_by_pk(1); // idが1のレコードを取得して変数に格納
  }
}
リスト97-4 APPPATH/classes/view/sample/member.php
HTML+PHP
<body>
  // 3ViewModelから渡された変数にアクセス
  <?php echo $user->name; ?>
</body>
リスト97-5 APPPATH/views/sample/member.php
PHP
public function action_member(){
  // 4ViewModelを取得
  $viewmodel = ViewModel::forge('sample/member');
  return Response::forge($viewmodel);
}
リスト97-6 APPATH/classes/controller/sample.php

 Viewに変数を渡す処理は、viewメソッドをオーバーライドして記述します(2)。Viewでは、ViewModelから渡された変数に「$this」を外してアクセスできます(3)。Controllerでは、ModelViewを取得してResponseクラスに渡します(4)。

※以下では、本稿の前後を合わせて5回分(第4回~第8回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
4. CakePHPのモデルとビューを利用する

CakePHPのモデルを定義して、ビューと組み合わせる方法を説明。また、Formヘルパーを使って入力チェックなどを行う方法も解説する。書籍転載の4本目(書籍内の番号は「95」)。

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
5. 高速で軽量なフレームワークFuelPHPを使う

高度なWebアプリ開発に向いている、高速で軽量なフレームワーク「FuelPHP」の基本的な使い方を説明する。書籍転載の5本目(書籍内の番号は「96」)。

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
6. 【現在、表示中】≫ FuelPHPで画面を表示する/DBを利用する

FuelPHPが提供する「HTMLを生成するのに便利なメソッド」や「DBの利用時にSQLを記述せずにCRUD操作が行えるクラス」について解説する。書籍転載の6本目(書籍内の番号は「97」)。

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
7. PDF文書を動的に生成する(FPDF)

PHPスクリプトからPDF文書を動的に生成できるFPDFの基本的な使い方を説明する。書籍転載の7本目(書籍内の番号は「29」)。

書籍転載:PHPライブラリ&サンプル実践活用[厳選100]
8. 表組みや画像/ハイパーリンク付きのPDFを作成する(FPDF)

FPDF(PDF_Japanese)クラスのメソッドを利用したさまざまな表現――文字列の装飾や画像の貼り付け、リンクの設置、表組みなどについて説明する。書籍転載の8本目(書籍内の番号は「30」)。

サイトからのお知らせ

Twitterでつぶやこう!