首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP封装全局变量

问PHP封装全局变量
EN

Stack Overflow用户
提问于 2010-12-08 08:03:10
回答 2查看 528关注 0票数 0

我有一个settings.php文件,我想在其中保存一些常量,比如我的数据库连接信息。

我想要完成的,但对于我的生活来说,我不知道该怎么做…我不希望我的settings.php中的每个常量都全局可用。我使用的是MVC设置,例如,我的控制器中没有可用的数据库连接信息。

我的问题是,如何设置这样的设置文件:

代码语言:javascript
复制
class Settings {

  const HOST = 'localhost';

  ....

  const DEBUG = true;
}

然后将其加载到我的应用程序中,以便将我的db连接常量封装到我的Model类中,依此类推。

我确信我没有尽我所能地解释这一点,但基本上我希望A:为所有设置提供一个中心位置,B:使其能够在我的应用程序中控制对这些设置的访问,从而使它们不是所有的全局可用的。

我遇到的问题是,如果我在父类中包含settings.php文件,那么它所固有的所有类也可以访问settings.php。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-08 08:07:37

将它们包装在一个函数中并调用它,例如

代码语言:javascript
复制
function init() {
    $model = new Model;
    $model->setConfigurationValue('name', 'value);
    // etc ...
}
init();

这样,没有任何东西是全局的。

就我个人而言,我使用symfony components YAML库将我的配置存储在YAML文件中,该文件会自动加载到一个单独的配置对象中,该对象允许从任何地方进行访问,但可以防止状态更改。我使用了多个YAML文件,这样我的DEV环境就可以添加额外的配置等等。

票数 1
EN

Stack Overflow用户

发布于 2010-12-08 09:19:53

我会在一个名为"local_settings.php“的文件中定义你的类。只需在php程序的顶部“包含”该文件并实例化你的类即可。

FOr每一个抱怨全局变量的人,这才是真正的全球价值观!你不太可能有另一个想要在你的模型的不同版本上工作的类连接到不同的数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4382970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档