ここでは、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"
// }
}
}
}