Когда мы не используем рамки,
что лучший способ хранить конфиги в проекте композитора и как мы можем загрузить их из контроллера или файла модели? мы предпочитаем хранить конфиги вне src
папка.
почему никто не использует константы класса хранить конфиги
ех. Приложение / Config / AppConfig :: TIMEZONE;
— composer.json
"autoload":
{
"psr-4":
{
"App\\": "src/app/"}
}
— /src/app/Configs/AppConfig.php
namespace App\Configs;
class AppConfig {
const TIMEZONE = 'EST';
}
— SRC / приложение / контроллеры / HelloWorld.php
namespace App\Controllers;
use App\Configs\AppConfig;
class HelloWorld
{
$timezone = AppConfig::TIMEZONE;
}
Спасибо
В современном мире дела идут современно. Лучший подход к конфигурациям — отдельно сохранять в каталоге. Теперь пришло время поговорить о вызове значений конфигурации; Создайте вспомогательную функцию, которая будет собирать данные для вас и эффективно возвращать, как вы хотели.
я использую этот пакет PHPConfig делать такие вещи.
Этот подход позволяет хранить все ваши элементы конфигурации в отдельном месте для остальной части вашего кода и обеспечивает легкий доступ к любым значениям конфигурации в любом месте вашего приложения.
Структура каталогов
- app
- app.php
- config
- config_file_one.php
- config_file_two.php
- public
- index.php
config_file_one.php
<?php
use TomWright\PHPConfig\Config;
$config = Config::getInstance();
$config->setItem('mysite.name', 'My Site');
config_file_two.php
<?php
use TomWright\PHPConfig\Config;
$config = Config::getInstance();
$config->setItem('mysite.url', 'https://www.example.com');
app.php
<?php
use TomWright\PHPConfig\Config;
class App {
public function __construct()
{
$this->loadConfigFiles();
}
private function loadConfigFiles()
{
require_once '/path/to/app/config/config_file_one.php';
require_once '/path/to/app/config/config_file_two.php';
}
public function run()
{
$config = Config::getInstance();
var_dump($config->getItem('mysite.name')); // My Site
var_dump($config->getItem('mysite.url')); // https://www.example.com
var_dump($config->getItem('mysite')); // stdClass { name => 'My Site', url => 'https://www.example.com' }
}
}
index.php
<?php
require_once './vendor/autoload.php';
$app = new App();
$app->run();
Вы можете сделать еще один шаг и автоматически включить все php-файлы в директорию config.
Вы также можете определить различные элементы конфигурации в зависимости от переменных среды и системных настроек, таких как среды разработки и производства.