ここでは、Zend Framework で使用されるパラメータ設定ファイル application.ini に独自のパラメータを設定し、取得するサンプルコードを掲載しています。
スポンサーリンク
独自リソースプラグインのパラメータ設定(application.ini)
Zend Framework では、あらかじめ利用可能なリソースプラグインがいくつか用意されており、頻繁に利用されるものとしては Zend_Application_Resource_Db などがあります。これらのリソースプラグインは application.ini でデータベース接続情報などを与えれるようになっています。この方法を踏襲して、独自にリソースプラグインを作成し application.ini からパラメータを与えれるようにしてみます。
まずは、今回使用するサンプルの application.ini になります。
application.ini
(省略) # リソースプラグインを格納するパス # resource ディレクトリを作成し、独自リソースクラスを配置する pluginPaths.My_Resource = APPLICATION_PATH "/resources" # フロントコントローラリソースプラグイン resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" resources.frontController.params.displayExceptions = 0 # 独自作成サンプルリソースプラグインへのパラメータ # 独自リソースへのパラメータを追加 resources.sample.param1 = "value1" resources.sample.param2 = "value2" (省略)
リソースプラグインを作成する
Zend Framework においてリソースプラグインは Zend_Application_Resource_ResourceAbstract を継承して作成する必要があり、最低限 init メソッドを実装しなければなりません。
path : application/resources/Sample.php
require_once 'Zend/Application/Resource/ResourceAbstract.php'; class My_Resource_Sample extends Zend_Application_Resource_ResourceAbstract { protected $_params = null; public function init() { /** * application.ini に定義したパラメータは getOptions で取得できる。今回のサンプルでは未使用(取得のみ) */ $this->getOptions(); // array(2) { // ["param1"]=> string(6) "value1" // ["param2"]=> string(6) "value2" // } // 適当でいい加減な初期化処理です。 $_params = array('orange' => 'america', 'apple' => 'aomori'); // リソースを返す return $_params; } }
application.ini には作成したリソースプラグインの格納場所を pluginPaths.(リソース名前空間) で指定する必要があります。リソース名前空間とプラグインファイル名、クラス名および リソースプラグインに渡すオプションパラメータの命名規則がポイントです。
これで、リソースプラグインの作成は完了です。ブラウザ(クライアント)から要求があるごとにフレームワークが自動的にリソースプラグインのインスタンス生成や init メソッドの呼出しまでを Bootstrap で行ってくれるようになります。
アクションコントローラでリソースプラグインのリターン値を取得する
アクション内でリソースプラグインの init メソッドが返した値を取得するには、次のように bootstrap 経由で取得します。
class IndexController extends Zend_Controller_Action { public function indexAction() { // ブートストラップからの起動パラメータを取得する $bootstrap = $this->getInvokeArg('bootstrap'); // リソース init メソッドのリターン値を取得する if ($bootstrap->hasResource('sample')) { $resource = $bootstrap->getResource('sample'); //var_dump($resource); // array(2) { // ["orange"]=> string(7) "america" // ["apple"]=> string(6) "aomori" // } } } }