PHP Using YAML to store application configuration


YAML provides a way to store structured data. The data can be a simple set of name-value pairs or a complex hierarchical data with values even being arrays.

Consider the following YAML file:

    driver: mysql
    port: 3306
    db_name: sample_db
    user: myuser
    password: Passw0rd
debug: true
country: us

Let's say, it's saved as config.yaml. Then to read this file in PHP the following code can be used:

$config = yaml_parse_file('config.yaml');

print_r will produce the following output:

    [database] => Array
            [driver] => mysql
            [host] =>
            [port] => 3306
            [db_name] => sample_db
            [user] => myuser
            [password] => Passw0rd

    [debug] => 1
    [country] => us

Now config parameters can be used by simply using array elements:

$dbConfig = $config['database'];

$connectString = $dbConfig['driver']
    . ":host={$dbConfig['host']}"
    . ":port={$dbConfig['port']}"
    . ":dbname={$dbConfig['db_name']}"
    . ":user={$dbConfig['user']}"
    . ":password={$dbConfig['password']}";
$dbConnection = new \PDO($connectString, $dbConfig['user'], $dbConfig['password']);