Zend_Config
спроектирован для того, чтобы сделать более
простым доступ и использование конфигурационных данных внутри приложения.
Он предоставляет основанный на вложенных свойствах объектов пользовательский
интерфейс для доступа к конфигурационным данным внутри приложения.
Конфигурационные данные могут храниться на различных носителях информации,
поддерживающих иерархическое хранение данных. На данный момент
Zend_Config
предоставляет адаптеры для конфигурационных
данных, хранящихся в текстовых файлах:
Zend_Config_Ini
и Zend_Config_Xml
.
Пример 5.1. Использование Zend_Config без адаптеров
Обычно предполагается, что используется один из классов адаптеров, например,
Zend_Config_Ini
или Zend_Config_Xml
.
Но если конфигурационные данные доступны в виде массива PHP,
то можно просто передавать эти данные конструктору Zend_Config
,
чтобы использовать преимущества простого объектно-ориентированного
интерфейса.
<?php // Массив конфигурационных данных $configArray = array( 'webhost' => 'www.example.com', 'database' => array( 'adapter' => 'pdo_mysql', 'params' => array( 'host' => 'db.example.com', 'username' => 'dbuser', 'password' => 'secret', 'dbname' => 'mydatabase' ) ) ); // Создание объектно-ориентированной обертки для конфигурационных данных require_once 'Zend/Config.php'; $config = new Zend_Config($configArray); // Вывод элемента конфигурационных данных (результатом будет 'www.example.com') echo $config->webhost; // Использование конфигурационных данных для соединения с базой данных $db = Zend_Db::factory($config->database->adapter, $config->database->params->toArray()); $db = Zend_Db::factory($config->database->adapter, $config->database->params->toArray()); // Альтернативный способ - просто передавайте объект Zend_Config. // Фабрика Zend_Db знает, как его интерпретировать. $db = Zend_Db::factory($config->database);
Как показано в предыдущем примере, в Zend_Config
для
доступа к конфигурационным данным, переданным его конструктору,
используется синтаксис вложенных свойств объектов.
Кроме объектно-ориентированного доступа к значениям данных,
Zend_Config
также предоставляет метод get()
,
который будет возвращать значение по умолчанию, если элемент
данных не существует. Например:
<?php $host = $config->database->get('host', 'localhost');
Пример 5.2. Использование Zend_Config с конфигурационным файлом PHP
Часто требуется использовать конфигурационный файл, основанный на "чистом" PHP. Следующий код показывает, как просто этого достичь.
<?php // config.php return array( 'webhost' => 'www.example.com', 'database' => array( 'adapter' => 'pdo_mysql', 'params' => array( 'host' => 'db.example.com', 'username' => 'dbuser', 'password' => 'secret', 'dbname' => 'mydatabase' ) ) );
<?php // Использование конфигурации require_once 'Zend/Config.php'; $config = new Zend_Config(require 'config.php'); // Вывод элемента конфигурационных данных (результатом будет 'www.example.com') echo $config->webhost;