以下列方式访问类中函数中的全局变量是不是很糟糕的编程(PHP)实践?
class test{
function a(){
global $myvar;
..
}
function b(){
global $myvar;
..
}
}
感谢。
答案 0 :(得分:3)
在我看来是的。您始终可以使用构造函数将全局变量“发布”到方法中,并通过字段保持链接。
答案 1 :(得分:2)
在我看来,是的,这不是一个像你一样使用的好习惯。您可以将其用作
class test{
private $myVar;
function __construct($myVar)
{
$this->myVar = $myVar;
}
function a(){
echo $this->myvar;
..
}
}
class test{
private $myVar;
function __construct()
{
global $myVar;
$this->myVar = $myVar;
}
function a(){
echo $this->myvar;
..
}
}
答案 2 :(得分:1)
不优雅。您应该在构造函数中传递该var,并将其保存到类中的private $var
中,以便在每个函数中使用$this->var
。
$myUnicorn = "Pink";
class Unicorn {
private $currentUnicorn;
public function __construct($current) {
$this->currentUnicorn = $current;
}
public function echoIt() {
echo $this->currentUnicorn;
}
public function killIt() {
unset($this->currentUnicorn); // :(
}
}
$u = new Unicorn($myUnicorn);
$u->killIt();
答案 3 :(得分:0)
除非你必须这样做,否则你不应该做那样的事情。如果有更好的方法可以做到有意义,那就使用它。例如,有些人使用它来访问配置变量,但更好的方法是使用define()
语句或静态类和文件。
TL; DR - 只有在必要时才这样做。否则,不要。
答案 4 :(得分:0)
IMO非常糟糕。您使您的类依赖于外部变量。在此变量不存在的上下文中实例化的对象将不起作用。
将变量传递给类的构造函数。这样,只有在提供参数时才能实例化对象。