Introdução ao Zend Framework

 Conhecendo o Zend Framework

appendix

 Referência do Zend Framework


  • Zend_Gdata
  • Zend_Http
  • Zend_InfoCard
  • Zend_Json
  • Zend_Layout
  • Zend_Ldap
  • Zend_Loader
  • Zend_Locale
  • Zend_Log
  • Zend_Mail
  • Zend_Markup
  • Zend_Measure
  • Zend_Memory
  • Zend_Mime
  • Zend_Navigation
  • Zend_Oauth
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Pdf
  • Zend_ProgressBar
  • Zend_Queue
  • Zend_Reflection
  • Zend_Registry
  • Zend_Rest

  • Zend_Search_Lucene
  • Zend_Serializer
  • Zend_Server
  • Zend_Service
  • Zend_Session
  • Zend_Soap
  • Zend_Tag
  • Zend_Test
  • Zend_Text
  • Zend_TimeSync
  • Zend_Tool
  • Zend_Tool_Framework
  • Zend_Tool_Project
  • Zend_Translate
  • Zend_Uri
  • Zend_Validate
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 12.2% Update 2011-11-16 - Revision 24447 - Version ZF 1.11.x

    Capítulo 22. Zend_Config_Writer

    22.1. Zend_Config_Writer

    Zend_Config_Writer lhe dá a capacidade de escrever arquivos de configuração a partir de objetos Zend_Config. Ele funciona com adaptadores separados do sistema e muito fáceis de usar. Por padrão, o Zend_Config_Writer vêm embarcado com quatro adaptadores, que são todos baseados em arquivos. Você instanciará um escritor com opções específicas, que podem ser filename e config. Em seguida, você irá chamar o método write() do escritor e o arquivo de configuração será criado. Você também pode fornecer $filename e $config diretamente ao método write(). Atualmente os escritores que se seguem são fornecidos com Zend_Config_Writer:

    • Zend_Config_Writer_Array

    • Zend_Config_Writer_Ini

    • Zend_Config_Writer_Json

    • Zend_Config_Writer_Xml

    • Zend_Config_Writer_Yaml

    Ao modificar ou criar um objeto Zend_Config, há algumas coisas que se deve conhecer. Para criar ou modificar um valor, basta definir o parâmetro do objeto Zend_Config através do assessor de parâmetro (->). Para criar uma seção na raiz ou para criar um ramo, você apenas irá criar uma nova matriz ("$config->branch = array();"). Para definir qual seção estende outra, você chamará o método setExtend() na raiz do objeto Zend_Config.

    Exemplo 22.1. Usando o Zend_Config_Writer

    Este exemplo ilustra a utilização básica de Zend_Config_Writer_Xml para criar um novo arquivo de configuração:

    // Cria o objeto de configuração
    $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';

    // Escreve o arquivo de configuração em uma das seguintes formas:
    // 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);

    Isso criará um arquivo de configuração XML com as seções de produção e de testes, onde testes estende produção.


    Exemplo 22.2. Modificando uma Configuração Existente

    Este exemplo demonstra como editar um arquivo de configuração existente.

    // Carrega todas as seções de um arquivo de configuração
    // existente, enquanto pula o que é estendido.
    $config = new Zend_Config_Ini('config.ini',
                                  
    null,
                                  array(
    'skipExtends'        => true,
                                        
    'allowModifications' => true));

    // Modifica um valor
    $config->production->hostname 'foobar';

    // Escreve o arquivo de configuração
    $writer = new Zend_Config_Writer_Ini(array('config'   => $config,
                                               
    'filename' => 'config.ini'));
    $writer->write();

    [Nota] Carregando um Arquivo de Configuração

    Ao carregar um arquivo de configuração existente para modificações, é muito importante que se carregue todas as seções e que se pule tudo o que é estendido, para que valores não sejam fundidos. Isto é feito passando o skipExtends como opção para o construtor.

    Para todos os escritores baseados em arquivo (INI, JSON, XML, YAML e Matriz PHP) internamente o render() é usado para construir a string de configuração. Este método pode ser usado de forma independente para acessar a string de representação dos dados de configuração.

    22.1.1. Notes specific to the INI writer

    • The INI writer has two modes for rendering with regard to sections. By default the top-level configuration is always written into section names. By calling $writer->setRenderWithoutSections(); all options are written into the global namespace of the INI file and no sections are applied.

    • Zend_Config_Writer_Ini has an additional option parameter nestSeparator, which defines with which character the single nodes are separated. The default is a single dot, which is accepted by Zend_Config_Ini by default.

    22.1.2. Notes specific to the YAML writer

    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...