当我们不使用框架时,
在作曲家项目中存储配置的最佳方式是什么?我们如何从控制器或模型文件加载它们?我希望我们可以在src
文件夹之外存储配置。
为什么没有人使用类常量来存储配置
离。应用/配置/的AppConfig :: TIMEZONE;
- composer.json
"autoload":
{
"psr-4":
{
"App\\": "src/app/"
}
}
- /src/app/Configs/AppConfig.php
namespace App\Configs;
class AppConfig {
const TIMEZONE = 'EST';
}
- src / app / Controllers / HelloWorld.php
namespace App\Controllers;
use App\Configs\AppConfig;
class HelloWorld
{
$timezone = AppConfig::TIMEZONE;
}
由于
答案 0 :(得分:0)
在现代世界中,事物正在走向现代。配置的最佳方法是单独保存在目录中。现在是时候谈谈调用配置值了;创建帮助函数,为您收集数据并根据需要高效返回。
答案 1 :(得分:0)
我使用this PHPConfig Package来做这类事情。
此方法允许您将所有配置项存储在与其余代码分开的单独位置,并使您可以轻松访问应用程序中任何位置的任何配置值。
目录结构
- 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();
您可以更进一步,自动包含config目录下的所有php文件。
您还可以根据环境变量和系统设置定义不同的配置项,例如开发和生产环境。