Zend Framework の紹介

 Learning Zend Framework

appendix

 Zend Framework リファレンス


  • 第36章 Zend_Gdata
  • 第37章 Zend_Http
  • 第38章 Zend_InfoCard
  • 第39章 Zend_Json
  • 第40章 Zend_Layout
  • 第41章 Zend_Ldap
  • 第42章 Zend_Loader
  • 第43章 Zend_Locale
  • 第44章 Zend_Log
  • 第45章 Zend_Mail
  • 第46章 Zend_Markup
  • 第47章 Zend_Measure
  • 第48章 Zend_Memory
  • 第49章 Zend_Mime
  • 第50章 Zend_Navigation
  • 第51章 Zend_Oauth
  • 第52章 Zend_OpenId
  • 第53章 Zend_Paginator
  • 第54章 Zend_Pdf
  • 第55章 Zend_ProgressBar
  • 第56章 Zend_Queue
  • 第57章 Zend_Reflection
  • 第58章 Zend_Registry
  • 第59章 Zend_Rest

  • 第60章 Zend_Search_Lucene
  • 第61章 Zend_Serializer
  • 第62章 Zend_Server
  • 第63章 Zend_Service
  • 第64章 Zend_Session
  • 第65章 Zend_Soap
  • 第66章 Zend_Tag
  • 第67章 Zend_Test
  • 第68章 Zend_Text
  • 第69章 Zend_TimeSync
  • 第70章 Zend_Tool
  • 第71章 Zend_Tool_Framework
  • 第72章 Zend_Tool_Project
  • 第73章 Zend_Translate
  • 第74章 Zend_Uri
  • 第75章 Zend_Validate
  • 第76章 Zend_Version
  • 第77章 Zend_View
  • 第78章 Zend_Wildfire
  • 第79章 Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 70.6% Update 2010-11-28 - Revision 23415

    第22章 Zend_Config_Writer

    22.1. Zend_Config_Writer

    Zend_Config_Writer は、設定ファイルに Zend_Config オブジェクトを書き出します。 アダプタなしでも動作するので、使用するのも簡単です。 デフォルトでは Zend_Config_Writer には 4 種類のアダプタが同梱されており、全てファイル・ベースです。 まず、filenameconfig のオプションを指定してライターのインスタンスを作成します。 それからライターの write() メソッドをコールすると、 設定ファイルが作成されます。$filename$config を、直接 write() メソッドで設定することもできます。現在は、次のライターが Zend_Config_Writer に同梱されています。

    • Zend_Config_Writer_Array

    • Zend_Config_Writer_Ini

    • Zend_Config_Writer_Json

    • Zend_Config_Writer_Xml

    • Zend_Config_Writer_Yaml

    Zend_Config オブジェクトを変更したり作成したりする際には、 知っておくべきことがあります。値を作成したり変更したりするには、 パラメータのアクセサ (->) で Zend_Config オブジェクトのパラメータを設定します。 ルート内のセクションやブランチを作成するには、新規配列を作成します ("$config->branch = array();")。 セクションの継承関係を定義するには、ルート Zend_Config オブジェクトの setExtend() メソッドをコールします。

    例 22.1. Zend_Config_Writer の使用法

    この例では、Zend_Config_Writer_Xml で新しい設定ファイルを作成する方法を説明します。

    // config オブジェクトを作成します
    $config = new Zend_Config(array(), true);
    $config->production = array();
    $config->staging    = array();

    $config->setExtend('staging''production');

    $config->production->db = array();
    $config->production->db->hostname 'localhost';
    $config->production->db->username 'production';

    $config->staging->db = array();
    $config->staging->db->username 'staging';

    // 次のいずれかの方法で設定ファイルを書き出します
    // a)
    $writer = new Zend_Config_Writer_Xml(array('config'   => $config,
                                               
    'filename' => 'config.xml'));
    $writer->write();

    // b)
    $writer = new Zend_Config_Writer_Xml();
    $writer->setConfig($config)
           ->
    setFilename('config.xml')
           ->
    write();

    // c)
    $writer = new Zend_Config_Writer_Xml();
    $writer->write('config.xml'$config);

    これは、production と staging というセクションを持つ XML 設定ファイルを作成します。staging は production を継承しています。


    例 22.2. 既存の設定の変更

    この例では、既存の設定ファイルを編集する方法を説明します。

    // すべてのセクションを既存の設定ファイルから読み込みますが継承は読み飛ばします
    $config = new Zend_Config_Ini('config.ini',
                                  
    null,
                                  array(
    'skipExtends'        => true,
                                        
    'allowModifications' => true));

    // 値を変更します
    $config->production->hostname 'foobar';

    // 設定ファイルを書き出します
    $writer = new Zend_Config_Writer_Ini(array('config'   => $config,
                                               
    'filename' => 'config.ini'));
    $writer->write();

    [注意] 設定ファイルの読み込み

    既存の設定ファイルを読み込んで変更をする場合は、 すべてのセクションを読み込んで継承を読み飛ばすことが大切です。 そうすることで、値がマージされてしまうことがなくなります。 そのために、コンストラクタで skipExtends オプションを指定します。

    構成節の文字列を作成するために、ファイル・ベースのライタ ( INIJSONXMLYAML 及び PHP 配列) 全てで内部的に render() が使用されます。 コンフィギュレーション・データの文字列表現にアクセスするために このメソッドをそれぞれ使用できます。

    22.1.1. INI ライター特有の注意

    • INI ライターでは、セクションについてのレンダリング用のモードが2つあります。 既定では、トップレベルの構成節は、常にセクション名に含まれます。 $writer->setRenderWithoutSections() を呼ぶことにより、 オプションの全てが INI ファイルのグローバル名前空間に含まれます。 そして、セクションは使用されません。

    • Zend_Config_Writer_Ini にはオプションのパラメータ nestSeparator が用意されています。 これは、ノードを区切る文字を定義します。デフォルトはドットひとつで、 これは Zend_Config_Ini によりデフォルトで受け付けられます。

    22.1.2. YAML ライター特有の注意

    The YAML writer lets you optionally specify an alternate YAML encoder to use. By default, one is shipped with the framework that is suitable for most configuration tasks. If you find it insufficient, or wish to use more advanced YAML, you may provide an alternate encoder callback.

    The method for doing so is to use the Zend_Config_Writer_Yaml::setYamlEncoder() method, passing it a valid callback.

    // Use the Symfony Yaml Component:
    $writer = new Zend_Config_Writer_Yaml($filename);
    $writer->setYamlEncoder(array('sfYaml''dump'));

    The above uses the Symfony Components' sfYaml component in order to encode the configuration to YAML.

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...