[ ZendFramework1 ] 自作プラグインでログを出力する(resources.log)

Pocket

ここでは、自作プラグインで application.ini に設定したリソース(resource.log)を取得しログ出力するサンプルとBootstrap の _init メソッドのリターン値を自作したプラグイン内で取得するサンプルを掲載しています。アクションコントローラ内で Bootstrap の _init メソッドのリターン値を取得する場合は、次のリンクを確認ください。

スポンサーリンク

自作プラグインでログ出力(resource.log)

application.ini にログ出力アプリケーションリソースが、次のように設定されているものとします。

application.ini

resources.log.stream.writerName = "Stream"
resources.log.stream.writerParams.stream = "/path/to/sample.log"
resources.log.stream.writerParams.mode = "a"
resources.log.stream.filterName = "Priority"
resources.log.stream.filterParams.priority = 4

上記の設定を使用して自作プラグインでログ出力を行うサンプルコードは次の通りです。

class Sample_Plugin extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        // ログリソースの取得
        $front = Zend_Controller_Front::getInstance();
        $log = $front->getParam('bootstrap')->log;
        // (↓)と等価
        //$log = $front->getParam('bootstrap')->getResource('log');
        
        // ログの出力
        $log->log("ログに出力するテキスト", Zend_Log::INFO);
    }
}

 

プラグインで Bootstrap の _init メソッドのリターン値を取得する

次のように Bootstrap で初期化処理の結果(リターン値)をプラグインで取得するサンプルコードは次の通りです。

Bootstrap

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    /**
     * 何かの初期化処理
     */
    protected function _initSomething()
    {
        /*
         * 何かの初期化処理
         */
        $obj = new StdClass();
        $obj->name = "yamada taro";

        return $obj;
    }
}

自作プラグイン

class Sample_Plugin extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        // Bootstrap の初期化処理メソッドのリターン値を取得する
        $front = Zend_Controller_Front::getInstance();
        $obj   = $front->getParam('bootstrap')->Something;
        
        // $obj の内容
        //------------------------------------------------
        // stdClass object {
        //     name => (string) yamada taro
        // }
    }
}

 

スポンサーリンク


Pocket

Leave a Comment

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