Содержание


Writer


Writer, Ini, Xml, PhpArray, Json, Yaml, ЗФ2, Zend Framework 2, ZF2




Zend\Config\Writer позволяет создавать конфигурационные файлы из PHP массива, Zend\Config\Config или любого объекта Traversable. Zend\Config\Writer является интерфейсом, определяющим два метода: toFile() и toString(). Существует пять частных реализаций этого интерфейса:

 - Zend\Config\Writer\Ini

 - Zend\Config\Writer\Xml

 - Zend\Config\Writer\PhpArray

 - Zend\Config\Writer\Json

 - Zend\Config\Writer\Yaml

 

Zend\Config\Writer\Ini

 

INI writer (создатель, писатель) имеет два режима относительно рендеринга sections (секций, разделов). По – умолчанию конфигурации верхнего уровня всегда записывается в имена секций. При вызове $writer->setRenderWithoutSectionsFlags(true); все опции будут записаны в глобальное пространство имен INI файла без создания разделов.

 

В Zend\Config\Writer\Ini имеется дополнительный параметр nestSeparator, благодаря которому можно указать символ-разделитель для узлов(nodes). По-умолчанию используется символ-разделитель точка «.».

 

При изменении или создании объекта Zend\Config\Config необходимо учитывать несколько вещей. Для создания или изменения значения Вы просто задаете имя параметра через «->». Для создания раздела в корне или ветви необходимо создать новый массив: $config->branch = array();

 

Следующий пример показывает базовое использование Zend\Config\Writer\Ini для создания нового конфигурационного файла:

// Create the config object
$config = new Zend\Config\Config(array(), true);
$config->production = array();
 
$config->production->webhost = 'www.example.com';
$config->production->database = array();
$config->production->database->params = array();
$config->production->database->params->host = 'localhost';
$config->production->database->params->username = 'production';
$config->production->database->params->password = 'secret';
$config->production->database->params->dbname = 'dbproduction';
 
$writer = new Zend\Config\Writer\Ini();
echo $writer->toString($config);

Результатом будет строка формата INI, содержащая следующее:

[production]
webhost = "www.example.com"
database.params.host = "localhost"
database.params.username = "production"
database.params.password = "secret"
database.params.dbname = "dbproduction"



Zend\Config\Writer\Xml


 

Zend\Config\Writer\Xml используется для формирования XML строки или файла, основываясь на объекте Zend\Config\Config.

 

Следующий пример показывает базовое использование Zend\Config\Writer\ Xml для создания нового конфигурационного файла:

// Create the config object
$config = new Zend\Config\Config(array(), true);
$config->production = array();
 
$config->production->webhost = 'www.example.com';
$config->production->database = array();
$config->production->database->params = array();
$config->production->database->params->host = 'localhost';
$config->production->database->params->username = 'production';
$config->production->database->params->password = 'secret';
$config->production->database->params->dbname = 'dbproduction';
 
$writer = new Zend\Config\Writer\Xml();
echo $writer->toString($config);

Результатом будет строка формата XML, содержащая следующее:

<?xml version="1.0" encoding="UTF-8"?>
"><zend-config>
    "><production>
        "><webhost>www.example.com"></webhost>
        "><database>
            "><params>
                "><host>localhost"></host>
                "><username>production"></username>
                "><password>secret</password>
                <dbname>dbproduction</dbname>
            </params>
        </database>
    </production>
</zend-config>

Для сохранения XML данных в файл Вы можете использовать метод toFile().

 

Zend\Config\Writer\PhpArray



 

Zend\Config\Writer\PhpArray может быть использован для создания PHP кода, который возвращает массив представления Zend\Config\Config объекта.

 

Следующий пример показывает базовое использование Zend\Config\Writer\ PhpArray для создания нового конфигурационного файла:

// Create the config object
$config = new Zend\Config\Config(array(), true);
$config->production = array();
 
$config->production->webhost = 'www.example.com';
$config->production->database = array();
$config->production->database->params = array();
$config->production->database->params->host = 'localhost';
$config->production->database->params->username = 'production';
$config->production->database->params->password = 'secret';
$config->production->database->params->dbname = 'dbproduction';
 
$writer = new Zend\Config\Writer\PhpArray();
echo $writer->toString($config);

Результатом будет PHP массив, содержащий следующее:

<?php
return array (
  'production' =>
  array (
    'webhost' => 'www.example.com',
    'database' =>
    array (
      'params' =>
      array (
        'host' => 'localhost',
        'username' => 'production',
        'password' => 'secret',
        'dbname' => 'dbproduction',
      ),
    ),
  ),
);

Для записи полученного результата используйте метод toFile().

 

Zend\Config\Writer\Json



 

Zend\Config\Writer\Json может быть использован для создания PHP кода, который возвращает JSON представление объекта Zend\Config\Config.

 

Следующий пример показывает базовое использование Zend\Config\Writer\ Json для создания нового конфигурационного файла:

// Create the config object
$config = new Zend\Config\Config(array(), true);
$config->production = array();
 
$config->production->webhost = 'www.example.com';
$config->production->database = array();
$config->production->database->params = array();
$config->production->database->params->host = 'localhost';
$config->production->database->params->username = 'production';
$config->production->database->params->password = 'secret';
$config->production->database->params->dbname = 'dbproduction';
 
$writer = new Zend\Config\Writer\Json();
echo $writer->toString($config);

Результатом будет строка формата JSON, содержащая следующее:

{ "webhost"  : "www.example.com",
  "database" : {
    "params"  : {
      "host"     : "localhost",
      "username" : "production",
      "password" : "secret",
      "dbname"   : "dbproduction"
    }
  }
}

Для записи полученного результата используйте метод toFile().

 

Zend\Config\Writer\Json использует компонент Zend\Json\Json для конвертации данных в формат Json.

 

Zend\Config\Writer\Yaml



 

Zend\Config\Writer\ Yaml может быть использован для создания PHP кода, который возвращает Yaml представление объекта Zend\Config\Config.  Для использования YAML writer необходимо передать функцию обратного вызова для внешних библиотек PHP или использовать YAML расширение PECL.

 

Следующий пример показывает базовое использование Zend\Config\Writer\ Yaml для создания нового конфигурационного файла:

// Create the config object
$config = new Zend\Config\Config(array(), true);
$config->production = array();
 
$config->production->webhost = 'www.example.com';
$config->production->database = array();
$config->production->database->params = array();
$config->production->database->params->host = 'localhost';
$config->production->database->params->username = 'production';
$config->production->database->params->password = 'secret';
$config->production->database->params->dbname = 'dbproduction';
 
$writer = new Zend\Config\Writer\Yaml();
echo $writer->toString($config);

Результатом будет строка формата Yaml, содержащая следующее:

webhost: www.example.com
database:
    params:
      host:     localhost
      username: production
      password: secret
      dbname:   dbproduction

Для записи полученного результата используйте метод toFile().

 

Для использования внешней YAML writer библиотеки необходимо передать функции обратного вызова в конструкторе класса. Например, если вы хотите использовать SpyC библиотеки:

// include the Spyc library
require_once ('path/to/spyc.php');
 
$writer = new Zend\Config\Writer\Yaml(array('Spyc','YAMLDump'));
echo $writer->toString($config);

Автор статьи: DuB