3

当我们不使用框架时,

  1. 在作曲家项目中存储配置的最佳方式是什么,以及我们如何从控制器或模型文件中加载它们?更喜欢我们可以将配置存储在src文件夹之外。

  2. 为什么没有人使用类常量来存储配置

前任。应用/配置/应用配置::时区;

- 作曲家.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;
}

谢谢

4

2 回答 2

0

我使用这个 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');

应用程序.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' }
    }

}

索引.php

<?php
require_once './vendor/autoload.php';
$app = new App();
$app->run();

您可以更进一步,自动将所有 php 文件包含在 config 目录下。

您还可以根据环境变量和系统设置定义不同的配置项,例如开发和生产环境。

于 2017-02-07T16:28:27.273 回答
0

在现代世界中,事情正在变得现代。配置的最佳方法是单独保存在目录中。现在是时候谈谈调用配置值了;创建帮助函数,它将为您收集数据并根据需要有效地返回。

于 2017-02-07T15:58:38.600 回答