Чтение конфигураций
Phalcon\Config — это компонент, используемый для преобразования файлов конфигурации различных форматов (с помощью адаптеров) в объекты PHP для использования в приложении.
Встроенные массивы
Первый пример демонстрирует, как преобразовать встроенные массивы в объекты Phalcon\Config. Этот вариант обеспечивает наилучшую производительность, так как файлы не считываются во время этого запроса.
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";
Если вы хотите лучше организовать свой проект, вы можете сохранить массив в другом файле, а затем прочитать его.
use Phalcon\Config; require "config/config.php"; $config = new Config($settings);
Адаптеры файлов
Доступные адаптеры:
| Класс | Описание |
|---|---|
| Phalcon\Config\Adapter\Ini | Использует файлы INI для хранения настроек. Внутренне адаптер использует функцию PHP parse_ini_file. |
| Phalcon\Config\Adapter\Json | Использует JSON-файлы для хранения настроек. |
| Phalcon\Config\Adapter\Php | Использует многомерные массивы PHP для хранения настроек. Этот адаптер обеспечивает наилучшую производительность. |
| Phalcon\Config\Adapter\Yaml | Использует YAML-файлы для хранения настроек. |
Чтение файлов INI
Файлы INI — это распространенный способ хранения настроек. Phalcon\Config использует оптимизированную функцию PHP parse_ini_file для чтения этих файлов. Разделы файлов парсятся в поднастройки для удобного доступа.
[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"
Вы можете прочитать файл следующим образом:
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";
Слияние конфигураций
Phalcon\Config может рекурсивно сливать свойства одного объекта конфигурации в другой. Новые свойства добавляются, а существующие свойства обновляются.
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);
Вышеприведенный код создаёт следующее:
Phalcon\Config Object
(
[database] => Phalcon\Config Object
(
[host] => localhost
[dbname] => production_db
[username] => scott
[password] => secret
)
[debug] => 1
[logging] => 1
)
В Phalcon Incubator доступны дополнительные адаптеры для этого компонента.
Инъекция зависимости конфигурации
Вы можете инжектировать зависимость конфигурации в контроллер, что позволит нам использовать Phalcon\Config внутри Phalcon\Mvc\Controller. Для этого добавьте следующий код в скрипт вашего инжектора зависимостей.
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);
}
);
Теперь в вашем контроллере вы можете получить доступ к вашей конфигурации, используя функцию инъекции зависимостей с именем config, как показано в следующем коде:
use Phalcon\Mvc\Controller;
class MyController extends Controller
{
private function getDatabaseName()
{
return $this->config->database->dbname;
}
}
© 2011–2017 Phalcon Framework Team
Licensed under the Creative Commons Attribution License 3.0.
https://docs.phalconphp.com/en/latest/reference/config.html