function foo () {
global $var;
// rest of code
}
Run Code Online (Sandbox Code Playgroud)
在我的小PHP项目中,我通常采用程序方式.我通常有一个包含系统配置的变量,当我需要在函数中访问此变量时,我会这样做global $var;.
这是不好的做法吗?
我有一个config.php包含在每个页面.在配置中我创建一个类似于下列的数组:
$config = array();
$config['site_name'] = 'Site Name';
$config['base_path'] = '/home/docs/public_html/';
$config['libraries_path'] = $config['base_path'] . '/libraries';
//etc...
Run Code Online (Sandbox Code Playgroud)
然后我有function.php,几乎每个页面都包括,我必须使用它global $config来访问它 - 这就是我想要摆脱的!
如何$config在不使用代码的情况下访问代码的其他部分global?
任何人都可以解释一下,为什么我不应该global在我的例子中使用?有人说这是一个糟糕的语气,其他人说它不安全?
我在何处以及如何使用它的示例:
function conversion($Exec, $Param = array(), $Log = '') {
global $config;
$cmd = $config['phppath'] . ' ' . $config['base_path'] . '/' . $Exec;
foreach ($Param as $s)
{
$cmd .= ' ' . $s;
}
}
Run Code Online (Sandbox Code Playgroud)
按照Vilx的建议,将所有这些放在类中会很酷但在这种情况下,我如何将它与从提取配置 …
抱歉,我是初学者,我无法确定这是一个多么好的问题,也许对你们这些人来说听起来完全是显而易见的.
如果我们使用下面这两个是相同哪个更好?
function doSomething ($var1,$var2,..){
...
}
Run Code Online (Sandbox Code Playgroud)
要么
function doSomething (){
global $var1,$var2,..;
...
}
Run Code Online (Sandbox Code Playgroud)
通过我们的使用,我的意思是我知道在第二种情况下我们也可以改变全局变量的值.但是,如果我们不需要这样做,这是编写此功能的更好方法呢?传递变量比在函数中宣布全局变量需要更少的内存吗?
假设情况:我在php中运行一个复杂的站点,我使用了很多全局变量.
我可以在变量存储在现有的全球范围内,也就是说$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,并投入了大量的不同的东西放入请求范围(这将是适当的使用,因为这些数据是指请求本身).
要么
我可以继续使用像global $userInfo, $foo, $bar;我的大多数功能中的行.
是否存在性能损失,或两种解决方案的内存使用量差异?
一个更容易打字...那么是否有最佳实践指南?