[ ZendFramework1 ] 独自リソースのパラメータ設定と取得(application.ini)

Pocket

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

参考

スポンサーリンク


Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>