我只是在浏览 Codeigniter 的一些核心文件,我发现它使用了一些你可能称之为分散在各处的程序函数,比如在核心类中的某处获取配置类的实例,而不是将其注入到它的对象中只是
$config =& get_config();
我不是专家,但这样做不是很糟糕吗?对我来说,似乎让应用程序具有不必要的全局状态。
据我所见,它几乎与做类似的事情完全相同
$config = App::loadClass('config');
第二种方法比第一种方法更糟吗?我认为这可能是因为当以第二种方式调用它时,App
类需要存在(并被定位)并以第一种方式调用它,不需要特定的类并且不需要包含类文件,因此要求较少。
我正在制作自己的框架,并且到目前为止一直避免使用任何静态的东西,但是当我查看领先框架的代码以获得想法或帮助时,我看到到处都是静态的东西,我想知道为什么?
您会认为领先的框架会编码得更好一些,或者使用全局方法可能不像许多人认为的那样有害,您怎么看?
在我的框架中,我必须将这个$config
对象注入到许多类和一个$logger
对象中,$messages/$language
以及一个等等。我使用依赖注入容器和工厂,但与仅仅做相比还是有点痛苦
$config = App::loadClass('config');
$someSetting = $config->setting('some.setting');
Logger::write('debug', 'some message');
如果我要使用静态方法,我应该使用过程方法(Codeigniter 示例)还是嵌入在类中的方法?还是您强烈建议不要使用它们?
任何意见将非常感谢。