Php 全局配置参数使用静态变量的缺点

Php 全局配置参数使用静态变量的缺点,php,symfony,Php,Symfony,我知道还有其他方法可以存档,但问题是。。。以下哪项是缺点: MyGlobalConfig.php AppKernel.php Article.php 不稳定的代码,因为要测试任何使用类,您需要为它们提供一个带有值的MyGlobalConfig,但很快您就会注意到,如果ClassA收到的配置值与ClassB不同,那么它将非常有用,因此您开始为这些类创建变通方法。或者classA用测试值污染全局状态,而ClassB需要原始值。等等,你继续绕圈子跑 不可使用的代码,所有配置使用者都依赖于同一个类,可能

我知道还有其他方法可以存档,但问题是。。。以下哪项是缺点:

MyGlobalConfig.php

AppKernel.php

Article.php

不稳定的代码,因为要测试任何使用类,您需要为它们提供一个带有值的MyGlobalConfig,但很快您就会注意到,如果ClassA收到的配置值与ClassB不同,那么它将非常有用,因此您开始为这些类创建变通方法。或者classA用测试值污染全局状态,而ClassB需要原始值。等等,你继续绕圈子跑

不可使用的代码,所有配置使用者都依赖于同一个类,可能是单一类。你不能取出一个配置使用者,而不带单片类

全局状态,即可在任何地方进行修改,无跟踪,因此完全不可预测且脆弱

不易辨认的代码

可能我忘了一些。。。 它基本上是伪装的全球变形金刚。 在全局范围内,只有常量是可以的,因为它们是不可变的,但即使如此,许多开发人员使用太多的常量来处理他们不应该使用它们的东西

不稳定的代码,因为要测试任何使用类,您需要为它们提供一个带有值的MyGlobalConfig,但很快您就会注意到,如果ClassA收到的配置值与ClassB不同,那么它将非常有用,因此您开始为这些类创建变通方法。或者classA用测试值污染全局状态,而ClassB需要原始值。等等,你继续绕圈子跑

不可使用的代码,所有配置使用者都依赖于同一个类,可能是单一类。你不能取出一个配置使用者,而不带单片类

全局状态,即可在任何地方进行修改,无跟踪,因此完全不可预测且脆弱

不易辨认的代码

可能我忘了一些。。。 它基本上是伪装的全球变形金刚。 在全局范围内,只有常量是可以的,因为它们是不可变的,但即使如此,许多开发人员使用太多的常量来处理他们不应该使用它们的东西

<?php

namespace Acme\DemoBundle;

class MyGlobalConfig
{
    public static $uploadsDir;
}
<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
use Acme\DemoBundle\MyGlobalConfig;

class AppKernel extends Kernel
{
    public function __construct($environment, $debug)
    {

        MyGlobalConfig::$uploadsDir = __DIR__ .'/../uploads';

        parent::__construct($environment, $debug);
    }
<?php

namespace Acme\DemoBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Acme\DemoBundle\MyGlobalConfig;

/**
 * @ORM\Entity
 */
class Article
{
    protected function getUploadsDir()
    {
        return MyGlobalConfig::$uploadsDir;
    }