Recipe 23.11. Reading Configuration Files


23.11.1. Problem

You want to use configuration files to initialize settings in your programs.

23.11.2. Solution

Use parse_ini_file( ), as in Example 23-30.

Parsing a configuration file

<?php $config = parse_ini_file('/etc/myapp.ini'); ?>

23.11.3. Discussion

The function parse_ini_file( ) reads configuration files structured like PHP's main php.ini file. Instead of applying the settings in the configuration file to PHP's configuration, however, parse_ini_file( ) returns the values from the file in an array.

For example, when parse_ini_file( ) is given a file with these contents:

; physical features eyes=brown hair=brown glasses=yes ; other features name=Susannah likes=monkeys,ice cream,reading

The array it returns is:

Array (     [eyes] => brown     [hair] => brown     [glasses] => 1     [name] => Susannah     [likes] => monkeys,ice cream,reading )

Blank lines and lines that begin with ; in the configuration file are ignored. Other lines with name=value pairs are put into an array with the name as the key and the value, appropriately, as the value. Words such as on and yes as values are returned as 1, and words such as off and no are returned as the empty string.

To parse sections from the configuration file, pass 1 as a second argument to parse_ini_file( ). Sections are set off by words in square brackets in the file:

[physical] eyes=brown hair=brown glasses=yes [other] name=Susannah likes=monkeys,ice cream,reading

If this file is in /etc/myapp.ini, then:

$conf = parse_ini_file('/etc/myapp.ini',1);

puts this array in $conf:

Array (     [physical] => Array         (             [eyes] => brown             [hair] => brown             [glasses] => 1         )     [other] => Array         (             [name] => Susannah             [likes] => monkeys,ice cream,reading         ) )

Another approach to configuration is to make your configuration file a valid PHP file that you load with require instead of parse_ini_file( ). If the file config.php contains:

<?php // physical features $eyes = 'brown'; $hair = 'brown'; $glasses = 'yes'; // other features $name = 'Susannah'; $likes = array('monkeys','ice cream','reading'); ?>

You can set the variables $eyes, $hair, $glasses, $name, and $likes with a simple require 'config.php';.

The configuration file loaded by require needs to be valid PHP'including the <?php start tag and the ?> end tag. The variables named in config.php are set explicitly, not inside an array, as in parse_ini_file( ). For simple configuration files, this technique may not be worth the extra attention to syntax, but it is useful for embedding logic in the configuration file, such as the statement in Example 23-31.

Logic in a configuration file

<?php $time_of_day = (date('a') == 'am') ? 'early' : 'late'; ?>

23.11.4. See Also

Documentation on parse_ini_file( ) at http://www.php.net/parse-ini-file.




PHP Cookbook, 2nd Edition
PHP Cookbook: Solutions and Examples for PHP Programmers
ISBN: 0596101015
EAN: 2147483647
Year: 2006
Pages: 445

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net