1

在我的应用程序中,我有我的常量:

define('APP_PATH', WEB_ROOT . APP_DIR);
define('LIBS_PATH', APP_PATH . LIBS_DIR);
define('MODELS_PATH', APP_PATH . MODELS_DIR);
define('VIEWS_PATH', APP_PATH . VIEWS_DIR);
define('CONTROLLERS_PATH', APP_PATH . CONTROLLERS_DIR);
etc...

因为一旦我的应用程序启动它们就永远不会改变,并且它们很容易从任何类/方法中访问。

我也有一个配置文件,其中包含其他设置,这些设置被导入到$config我在应用程序中传递并检索它们的对象中,例如:

$this->config->setting('some.setting');

我从来不需要在应用程序的末尾或中间更改配置值,所以将它们定义为常量不是更容易,这样我就可以在我的代码中轻松访问它们了吗?

我也不想静态检索设置,即

Config::setting('some.setting');

我查看了一些 PHP 框架的代码,它们都将路径定义为常量,但是在某种类中还有其他配置设置,Config尽管据我所知,它们从未在整个代码中更改这些配置设置(尽管它们可能因为我没有通读数万行中的每一行)并且许多框架似乎喜欢从不同类的方法中对各种方法进行静态调用,人们说它们是很好的框架,但我已经阅读并体验过当涉及到类/方法中的静态调用时,弊大于利。

您认为最好用配置设置做什么?你做什么工作?

4

2 回答 2

0

在对象中包装常量使您的代码更具可移植性。

例如,通过这种方式,您可以在应用程序引导时从文件加载常量,这样您就可以在任意数量的应用程序中重用您的代码,每个应用程序都有不同的配置文件。

在另一个程度上,从一个类中加载东西就像一个门面:你可以将设置从一个文件移动到一个数据库,甚至硬编码它们,而整个应用程序都不会注意到。

当然,您可以参加define很少的项目。

于 2013-01-01T13:40:19.287 回答
0

在配置对象中包装设置提供了封装,从而允许更好的共存。

例如,假设您有一个数据库访问框架。如果为此使用全局设置,则无法在单个程序中轻松访问多个数据库。将设置放入对象允许您为相应的数据库使用特定的配置对象。

于 2013-01-01T15:19:37.767 回答