Zend_Config
is designed to simplify the access to, and the use of,
configuration data within applications. It provides a nested object property based user
interface for accessing this configuration data within application code. The configuration
data may come from a variety of media supporting hierarchical data storage. Currently
Zend_Config
provides adapters for configuration data that are stored
in text files with Zend_Config_Ini
and
Zend_Config_Xml
.
Example 118. Using Zend_Config
Normally it is expected that users would use one of the adapter classes such as Zend_Config_Ini
or
Zend_Config_Xml
,
but if configuration data are available in a PHP array, one may
simply pass the data to the Zend_Config
constructor in order to
utilize a simple object-oriented interface:
// Given an array of configuration data $configArray = array( 'webhost' => 'www.example.com', 'database' => array( 'adapter' => 'pdo_mysql', 'params' => array( 'host' => 'db.example.com', 'username' => 'dbuser', 'password' => 'secret', 'dbname' => 'mydatabase' ) ) ); // Create the object-oriented wrapper upon the configuration data $config = new Zend_Config($configArray); // Print a configuration datum (results in 'www.example.com') echo $config->webhost; // Use the configuration data to connect to the database $db = Zend_Db::factory($config->database->adapter, $config->database->params->toArray()); // Alternative usage: simply pass the Zend_Config object. // The Zend_Db factory knows how to interpret it. $db = Zend_Db::factory($config->database);
As illustrated in the example above, Zend_Config
provides nested
object property syntax to access configuration data passed to its constructor.
Along with the object oriented access to the data values,
Zend_Config
also has get()
which will
return the supplied default value if the data element doesn't exist. For example:
$host = $config->database->get('host', 'localhost');
Example 119. Using Zend_Config with a PHP Configuration File
It is often desirable to use a pure PHP-based configuration file. The following code illustrates how easily this can be accomplished:
// 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' ) ) );
// Configuration consumption $config = new Zend_Config(require 'config.php'); // Print a configuration datum (results in 'www.example.com') echo $config->webhost;