第2回 Zend Frameworkの各コンポーネントを一気に制する:「Zend Framework」で加速するPHP開発(3/3 ページ)
前回は、Zend Frameworkの概要とその導入方法について説明しました。今回は、各コンポーネントの使用方法について紹介していきます。
Modelクラス:データベースアクセスやロジックを処理するモデル層を定義する
Zend Frameworkでは、データベースアクセスの抽象レイヤーとなるZend_Dbを備えています。基本的にはPDOを中心としたアダプタで構成されていますが、DB2、Oracle、MySQLiはネイティブのドライバによって実装されています*。
DBMSの切り替え
Zend_Dbでは、factoryメソッドに渡すURLを変更することで、ドライバの種類を変更可能です。このURLの形式は、「PDO_MYSQL」のように「PDO_」を先頭につけることが推奨されています*(表1)。
SQLクエリの発行方法
現在のバージョンでは、例えば次のような選択肢があります。
- Zend_Db_Adapterを使用して直接的にSQLクエリを発行する(リスト5)
ほかのフレームワークでよくあるようなSQLの隠蔽効果はありませんが、シンプルで分かりやすいコードが記述できます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
- SQLクエリの発行を、内包されたZend_Db_Adapterの機能に委譲する(リスト6)
Zend_Dbではドライバの抽象レイヤーが提供されているので、データベースにアクセスするAPIの違いを意識することなく、互換性の高いコードを記述可能です。ただし、データベースによっては発行するSQLに多少の差異が存在するので、SQLが記述されたアプリケーションを、互換性を意識せずに移行するのは難しいです。そのため、SQL文の生成をZend_Dbに委譲して、必要最低限の記述のみで済ませることもできます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
- Zend_Db_Tableを使用してO/Rマッピングを行う(リスト7)
Zend_Db_Table は、Zend_Db_Tableクラスを継承したオブジェクトと、対応する表をマッピングするような仕組みを備えています。これによって、オブジェクト指向と親和性の高い記述が可能です。また、余計なコードを記述しなくても済むように、デフォルト値として規約が存在します。リスト7でいうと、「RoundTable」クラスはデータベースの「round_table」表とマッピングされます。また、主キーは「id」列として認識されます。ただし、次のように継承したクラスの変数を上書きして、任意の値をデフォルト値の代わりに使用することもできます。
<?
ass RoundTable extends Zend_Db_Table
{
$this->_name = 'another_table_name';
$this->_primary = 'another_column_name';
}
?>
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
おわりに
以上、2回に渡ってZend Frameworkの機能と概要を解説しました。より詳細は、具体例を用いて今後解説していきます。また、Zend Frameworkのマニュアルでは、すぐに実行可能なサンプルコードを交えながらフレームワークの機能を解説しています。このマニュアルは、日本語を含む主要10か国語でリリースされており、英語が得意でない方にも始めやすいように配慮がなされています。ぜひチャレンジしてみてください。
次回からは、Zend Frameworkで構築されたブログツールを題材にして、実際にZend Frameworkに備わる機能や使い方を解説していきたいと思います。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このページで出てきた専門用語
DB2、Oracle、MySQLiはネイティブのドライバによって実装されています
ただし、Zend_Dbが提供するAPIはPDOに依存しないため、使用する上で意識しなくて良いよう配慮されている。
「PDO_」を先頭につけることが推奨されています
この方法によるURL指定は、Preview 0.2から推奨されており、Preview 0.1.5では別の指定方法も可能。
本記事は、オープンソースマガジン2006年11月号「Zend Framework」で加速するPHP開発を再構成したものです。
著者紹介
日本アイ・ビー・エム システムズエンジニアリング株式会社
杉田直哉
日本アイ・ビー・エム システムズ・エンジニアリング株式会社(ISE)は、日本アイ・ビー・エムグループにおけるSE技術者の専門家集団として1992年7月に設立された。
発足以来、IBM製品を中心とした難易度の高い複雑なシステム構築や先進技術の適用場面において、卓越したITスキルによりお客様と開発現場を支援してきた。
近年は、仮想化技術・グリッドコンピューティング・Web 2.0・オープンソースソフトウェア等々の先進技術分野での支援も展開している。
関連記事
- developersLife〜開発者という生き方
- 連載第1回 PHP開発でZend Frameworkを知らないだなんて嘘ですよね?
Zend Frameworkは、MVCアーキテクチャを構成し、各種コンポーネントを組み合わせることで効率的なPHPアプリケーションを構築できるフレームワークで、PHP用フレームワークの本命と呼ばれている。本稿では、Zend Frameworkについて、その機能と各種コンポーネントの使い方を解説する。 - PHPアプリ開発ツールベンダーに再編の動き
3社のソフトウェア開発ツール企業が経営トップの入れ替えを発表した。Zend Technologies、Catalyst Systems、Mindreefの各社は相次いで、新CEOを指名した。 - Zend、IBM System i向けのPHP製品を提供開始
関連リンク
- developerWorks
- Zend Frameworkを理解する パート1:基本
Zend Framework についてまだ聞いたことがなくてもいですって?心配には及びません。この記事では、Zend Framework を概観し、その一般概念を説明し、この「Zend Framework を理解する」シリーズで学ぶ準備をします。 - Zend Core for IBM - PHP開発者のためのガイド・ツアー
Copyright © ITmedia, Inc. All Rights Reserved.