Documentation

Table Of Contents

Previous topic

< Forms

Next topic

Pagination >

This Page

Configuration de lecture

Phalcon\Config est un composant utilisé pour lire des fichiers de configuration sous différents formats (en utilisant des adaptateurs) et transformer le contenu en objet PHP pour pouvoir l’utiliser dans une application.

Les Array natifs

L’exemple suivant montre comment convertir les arrays natifs en objets Phalcon\Config. Cette option offre les meilleures performances vu qu’il n’y a pas de fichiers lu pendant la requête.

<?php

use Phalcon\Config;

$settings = [
    "database" => [
        "adapter"  => "Mysql",
        "host"     => "localhost",
        "username" => "scott",
        "password" => "cheetah",
        "dbname"   => "test_db"
    ],
     "app" => [
        "controllersDir" => "../app/controllers/",
        "modelsDir"      => "../app/models/",
        "viewsDir"       => "../app/views/"
    ],
    "mysetting" => "the-value"
];

$config = new Config($settings);

echo $config->app->controllersDir, "\n";
echo $config->database->username, "\n";
echo $config->mysetting, "\n";

Si vous voulez mieux organiser votre projet vous pouvez sauvegarder l’array dans un autre fichier pour ensuite le lire.

<?php

use Phalcon\Config;

require "config/config.php";

$config = new Config($settings);

Adaptateur de fichier

Les adaptateurs disponibles sont :

File Type Description
Phalcon\Config\Adapter\Ini Utilise des fichiers INI pour stoquer des paramètres. L’adaptateur utilise la fonction PHP parse_ini_files
Phalcon\Config\Adapter\Json Uses JSON files to store settings.
Phalcon\Config\Adapter\Php Uses PHP multidimensional arrays to store settings. This adapter offers the best performance.
Phalcon\Config\Adapter\Yaml Uses YAML files to store settings.

Lire les fichiers INI

Les fichiers INI sont un moyen habituel pour stoquer des paramètres. Phalcon\Config utilise la fonction parse_ini_file optimisé pour lire ces fichiers. Les sections sont parsé en sous-paramètres pour un accès simplifié.

[database]
adapter  = Mysql
host     = localhost
username = scott
password = cheetah
dbname   = test_db

[phalcon]
controllersDir = "../app/controllers/"
modelsDir      = "../app/models/"
viewsDir       = "../app/views/"

[models]
metadata.adapter  = "Memory"

Vous pouvez lire le fichier comme cela :

<?php

use Phalcon\Config\Adapter\Ini as ConfigIni;

$config = new ConfigIni("path/config.ini");

echo $config->phalcon->controllersDir, "\n";
echo $config->database->username, "\n";
echo $config->models->metadata->adapter, "\n";

Configuration de fusion

Phalcon\Config permet de fusionner une configuration objet en un autre de manière récursif :

<?php

use Phalcon\Config;

$config = new Config(
    [
        "database" => [
            "host"   => "localhost",
            "dbname" => "test_db",
        ],
        "debug" => 1,
    ]
);

$config2 = new Config(
    [
        "database" => [
            "dbname"   => "production_db",
            "username" => "scott",
            "password" => "secret",
        ],
        "logging" => 1,
    ]
);

$config->merge($config2);

print_r($config);

Le code fournit le résultat suivant :

Phalcon\Config Object
(
    [database] => Phalcon\Config Object
        (
            [host] => localhost
            [dbname]   => production_db
            [username] => scott
            [password] => secret
        )
    [debug] => 1
    [logging] => 1
)

Il y a plus d’adaptateurs disponible pour ce composant dans l’ There are more adapters available for this components in the Incubateur Phalcon

Injecting Configuration Dependency

You can inject configuration dependency to controller allowing us to use Phalcon\Config inside Phalcon\Mvc\Controller. To be able to do that, add following code inside your dependency injector script.

<?php

use Phalcon\Di\FactoryDefault;
use Phalcon\Config;

// Create a DI
$di = new FactoryDefault();

$di->set(
    "config",
    function () {
        $configData = require "config/config.php";

        return new Config($configData);
    }
);

Now in your controller you can access your configuration by using dependency injection feature using name config like following code:

<?php

use Phalcon\Mvc\Controller;

class MyController extends Controller
{
    private function getDatabaseName()
    {
        return $this->config->database->dbname;
    }
}
Follow along: