[ ZendFramework1 ] 独自の ini ファイルを使用する (Zend_Config_Ini, Zend_Log, Zend_Db_Adapter)

Pocket

ここでは、ログの出力先とデータベースの接続先情報を独自の ini ファイルに定義して、Zend_Log クラスと Zend_Db_Adapter クラスインスタンスを生成するサンプルコードを掲載しています。

application.ini ファイル以外に個々のコンフィグ情報を設定すると、いいことあったり、なかったりします。

スポンサーリンク


独自の ini ファイルの設定例


// my_config.ini

[production]

// Oracle データベース 接続情報
oradb.adapter  = "oracle"
oradb.params.username = "user"
oradb.params.password = "password"
oradb.params.dbname   = "dbname"
oradb.params.charset  = "UTF8"

// ログファイルの出力先
log.stream.writerName = "Stream"
log.stream.writerParams.stream = "/path/to/log.log"
log.stream.writerParams.mode = "a"
log.stream.filterName = "Priority"
log.stream.filterParams.priority = 8

設定情報をアプリケーションで使用するサンプルコード

次は、独自の ini ファイルに設定した情報をアプリケーションから使用するサンプルコードになります。詳細はサンプル内のコメントを参照ください。

// 使用する Zend Framework クラスの読み込み
require_once 'Zend/Config/Ini.php';
require_once 'Zend/Db.php';
require_once 'Zend/Log.php';

class MyConfig
{
    /*
     * 環境変数などから取得するようにするとプログラムと切り離せるので安全
     */
    const PHP_SCRIPT_ENV = 'production';

    private $_oradb;
    private $_log;

    public function __construct()
    {
        // スクリプトと同一ディレクトリにあるコンフィグファイルの読み込み
        $ini_path = __DIR__ . "/my_config.ini";
        $config = new Zend_Config_Ini($ini_path, self::PHP_SCRIPT_ENV);

        /*
         * コンフィグファイルの情報を元に インスタンスを生成する
         */
        $this->_oradb = Zend_Db::factory($config->oradb);
        $this->_log   = Zend_Log::factory($config->log);
    }
    
    // Zend_Db_Adapter の取得
    public function getOraDb()
    {
        return $this->_oradb;
    }

    // Zend_Log の取得
    public function getLog()
    {
        return $this->_log;
    }
}

/*
 * 使用例
 */
$myconf = new MyConfig();

// ログファイルへの出力
$myconf->getLog()->log('出力するメッセージ', Zend_Log::CRIT);

 

スポンサーリンク

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>