RADツールによるPHPアプリケーション速効開発
- Zend_Application -
Zend Frameworkによる実践的なPHPアプリケーション開発 24
ダウンロード サンプルファイル (6.8 KB)
ブートストラップ
ブートストラップは、アプリケーションで利用するリソースを生成する手順です。このブートストラップはブートストラップクラスの中で行われます。
なお、この記事の前の方で「Zend_Application_Boostrap」という名前を出しましたが、実際にはそのような名前のクラスは存在せず、図1のように2つのインターフェイスとそれを実装した抽象クラス、さらにそれを継承したクラスの4つの部品から成り立っています。

このうち、主に利用するのは「Zend_Application_BootstrapBootstrap」クラスで、通常はこのクラスを継承して自分のブートストラップクラスを作成することになると思います。ただし、いくつかの重要なメソッドは「Zend_Application_Bootstrap_Abstract」クラス内で定義されているため、必要に応じてこちらのクラスも参照する必要があるかもしれません。
このブートストラップクラス内では、リソースの作成を行っています。このリソースの作成を行うには
- ブートストラップクラス内のメソッドを利用
- リソースプラグインを利用
の2つの方法あります。
ブートストラップクラス内での生成
1つ目はブートストラップクラスに「_init」から始まるメソッドを増やし、その中でリソースを生成する方法です。この方法を利用するためには、基本的には自分で「Zend_Application_BootstrapBootstrap」クラスを継承したクラスを作成し、その自作のクラス内に新しいメソッドを記述することになります(と言いつつも、今までもそうしてきましたが)。
それでは例を見てみましょう。
<?php
require_once 'codezine_zend_view.php';
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
public function _initCaptcha()
{
/* CAPTCHAを作成 */
$captcha = new Zend_Captcha_Figlet(array(
'name' => 'foo',
'wordLen' => 6,
'timeout' => 300));
return $captcha;
}
public function _initView()
{
/* ビュークラスを作成 */
$view = new Codezine_Zend_View();
/* ビュークラスを設定 */
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
'ViewRenderer');
$viewRenderer->setView($view);
return $view;
}
}
リスト7の例では、2つのメソッドを追加しています。1つ目は「_initCaptcha」で2つ目は「_initView」です。それぞれ内容は単純で、_initCaptchaではZend_Captcha_Figletクラスのインスタンスを作成して返しており、また_initViewではCodezine_Zend_Viewクラスのインスタンスを作成してビューレンダラーに登録しています。
このように、作成したいリソースについて「_init(リソース名)」という名前のメソッドを定義して、その中でリソースを作成し、返すだけでブートストラップ内でのリソースの作成を行うことができます。
なお、Codezine_Zend_Viewはリスト8のように、実際は生のZend_Viewと同じ機能しか持っていません。
<?php
class Codezine_Zend_View extends Zend_View
{
}
では、この作成したリソースはどのように利用するのでしょう? リスト7のうち、_initViewで作成されたリソースはビューレンダラーに登録されるため、自動的に利用されますが、_initCaptchaの方は別途アクションスクリプト内などで参照する必要があります。
ブートストラップクラス内で作成されたリソースは、ブートストラップクラスのgetResourceメソッドで取得することができます。ブートストラップクラスはフロントコントローラーの「bootstrap」という名前のメンバ変数に割り当てられているので、このことを利用してリソースを取得することにします。
(IndexController.php)
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$bootstrap = $this->getInvokeArg('bootstrap'); ←(1)
$captcha = $bootstrap->getResource('captcha'); ←(2)
$id = $captcha->generate();←(3)
$this->view->assign('captcha', $captcha->render($this->view));←(4)
...
(index.phtml)
Bootstrap test.
<?php echo $this->captcha ?>←(5)
手順としては、まず(1)でブートストラップクラスのインスタンスを取得しています。このgetInvokeArgメソッドは、アクションコントローラーからフロントコントローラーのメンバ変数を取得するためのものです。(2)でブートストラップクラスからリソース「captcha」を取得しています。(3)、(4)はCAPTCHAを生成したうえでその生成したCAPTCHAをビューの変数「captcha」に割り当てています。そして、(5)でそのCAPTCHAを表示しています。
これを実行した結果は図2のようになります
- 修正履歴
-
- 2009/10/16 11:54 必要な環境の「PHP5.1.4以降」を「PHP5.2.4以降」に修正しました.
この記事は参考になりましたか?
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 風田 伸之(カゼタ ノブユキ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

