停止在PHP中使用“global”我有一个config.php包含在每一页中。在配置中,我创建了一个类似于以下内容的数组:$config = array();$config['site_name'] = 'Site Name';$config['base_path'] = '/home/docs/public_html/';
$config['libraries_path'] = $config['base_path'] . '/libraries';//etc...那我就有了function.php,这也包括在几乎每一页,其中我必须使用global $config才能接触到它-而且这,这个就是我想摆脱的东西!我如何访问$config在代码的其他部分中,而不使用global?有人能解释一下吗为什么我不应该用global以我为例?有人说这是不好的语气,另一些人说这不安全?编辑1:我在哪里以及如何使用它的例子:function conversion($Exec, $Param = array(), $Log = '') {
global $config;
$cmd = $config['phppath'] . ' ' . $config['base_path'] . '/' . $Exec;
foreach ($Param as $s)
{
$cmd .= ' ' . $s;
}
}编辑2:把所有这些都放到课堂上,就像维尔克斯,但在本例中,我将如何将其与正在提取配置的下面的循环绑定key和value从数据库。我把分配的想法简单化了$config数组,下面是一个示例:$sql = "SELECT * from settings";$rsc = $db->Execute($sql);if ( $rsc ) {
while(!$rsc->EOF) {
$field = $rsc->fields['setting_options'];
$config[$field] = $rsc->fields['setting_values'];
@$rsc->MoveNext();
}}编辑3:另外,我还得去找其他人vars来自在config中设置的函数,并且它们很少,例如:$db, $language等等。如果我把它们放到课堂上,它真的能解决任何问题吗?如果我用global它真正改变了什么?编辑4:我读PHP全局函数哪里高登用一种很好的方式解释了为什么你不应该用global..我同意每件事,但我不使用global在我的例子中,重新分配变量,这会导致,就像他说的,<-- WTF!!是的,同意,这太疯狂了。但是,如果我只需要从一个函数访问数据库,只需使用global $db这个案子的问题在哪里?您如何做到这一点,否则,不使用global?编辑5:在相同的PHP全局函数中欺骗说:“反对全球的一个主要原因是,这意味着该功能依赖于另一个范围。这将很快变得混乱。”但我说的是基本的“INIT”。我基本上define但使用vars-这在技术上是错误的。但是您的函数不依赖于任何东西-而是一个var的名称。$db你能记住吗?它确实是全球需要使用的$db,这里的依赖项在哪里,否则如何使用它?P.S.我刚想到,我们正面临着两种不同思想的冲突,例如:水雷(但不太了解面向对象的编程)和那些在OOP中可以被称为大师(从我目前的观点来看)的人-对他们来说显而易见的事情-出现了新的问题。我想这就是为什么这个问题被一遍又一遍地问下去的原因。就我个人而言,它毕竟变得更清楚了,但仍然有一些事情需要澄清。
3 回答
![?](http://img1.sycdn.imooc.com/545864190001966102200220-100-100.jpg)
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
class Config{ public static $SiteName = 'My Cool Site';}function SomeFunction{ echo 'Welcome to ' , Config::$SiteName;}
CFG_SITE_NAME
- 3 回答
- 0 关注
- 641 浏览
添加回答
举报
0/150
提交
取消