Introduction to Zend\Config¶
Zend\Config is designed to simplify access to 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 that read and write configuration data stored in .ini, JSON, YAML and XML files.
Using Zend\Config\Config with a Reader Class¶
Normally, it is expected that users would use one of the reader classes to read a configuration file, but if configuration data are available in a PHP array, one may simply pass the data to Zend\Config\Config‘s constructor in order to utilize a simple object-oriented interface:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // An array of configuration data is given
$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 using the configuration data
$config = new Zend\Config\Config($configArray);
// Print a configuration datum (results in 'www.example.com')
echo $config->webhost;
|
As illustrated in the example above, Zend\Config\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\Config also has get() method that returns the supplied value if the data element doesn’t exist in the configuration array. For example:
1 | $host = $config->database->get('host', 'localhost');
|
Using Zend\Config\Config with a PHP Configuration File¶
It is often desirable to use a purely PHP-based configuration file. The following code illustrates how easily this can be accomplished:
1 2 3 4 5 6 7 8 9 10 11 12 13 | // 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'
)
)
);
|
1 2 3 4 5 | // Consumes the configuration array
$config = new Zend\Config\Config(include 'config.php');
// Print a configuration datum (results in 'www.example.com')
echo $config->webhost;
|