Zend_Config_Ini
enables developers to store configuration data in a
familiar INI format and read them in the application by using nested
object property syntax. The INI format is specialized to provide both
the ability to have a hierarchy of configuration data keys and inheritance between
configuration data sections. Configuration data hierarchies are supported by separating the
keys with the dot or period character ("."). A section may extend or
inherit from another section by following the section name with a colon character
(":) and the name of the section from which data are to be inherited.
Parsing the INI File
Zend_Config_Ini
utilizes the parse_ini_file()
PHP function. Please review this documentation to be aware of its
specific behaviors, which propagate to Zend_Config_Ini
, such as
how the special values of "TRUE
", "FALSE
",
"yes", "no", and "NULL
" are handled.
Key Separator
By default, the key separator character is the period character
("."). This can be changed, however, by changing the
$options
key nestSeparator when constructing
the Zend_Config_Ini
object. For example:
$options['nestSeparator'] = ':'; $config = new Zend_Config_Ini('/path/to/config.ini', 'staging', $options);
Example 120. Using Zend_Config_Ini
This example illustrates a basic use of Zend_Config_Ini
for
loading configuration data from an INI file. In this example there
are configuration data for both a production system and for a staging system. Because
the staging system configuration data are very similar to those for production, the
staging section inherits from the production section. In this case, the decision is
arbitrary and could have been written conversely, with the production section
inheriting from the staging section, though this may not be the case for more complex
situations. Suppose, then, that the following configuration data are contained in
/path/to/config.ini
:
; Production site configuration data [production] webhost = www.example.com database.adapter = pdo_mysql database.params.host = db.example.com database.params.username = dbuser database.params.password = secret database.params.dbname = dbname ; Staging site configuration data inherits from production and ; overrides values as necessary [staging : production] database.params.host = dev.example.com database.params.username = devuser database.params.password = devsecret
Next, assume that the application developer needs the staging configuration data from the INI file. It is a simple matter to load these data by specifying the INI file and the staging section:
$config = new Zend_Config_Ini('/path/to/config.ini', 'staging'); echo $config->database->params->host; // prints "dev.example.com" echo $config->database->params->dbname; // prints "dbname"
Note
Table 41. Zend_Config_Ini Constructor Parameters
Parameter | Notes |
---|---|
$filename |
The INI file to load. |
$section |
The [section] within the INI file that is to be
loaded. Setting this parameter to NULL will load
all sections. Alternatively, an array of section names may be supplied
to load multiple sections.
|
$options (default FALSE )
|
Options array. The following keys are supported:
|