它是不好的編程(PHP)的做法來訪問一個全局變量的函數的類裏面下列方式?
class test{
function a(){
global $myvar;
..
}
function b(){
global $myvar;
..
}
}
謝謝。
它是不好的編程(PHP)的做法來訪問一個全局變量的函數的類裏面下列方式?
class test{
function a(){
global $myvar;
..
}
function b(){
global $myvar;
..
}
}
謝謝。
它不是優雅的。您應該在構造函數中傳遞該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();
在我看來,它是。您可以隨時使用構造函數將您的全局變量「發佈」爲您的方法,並在字段中保留鏈接。
在我看來,是的,它不是一個像你一樣使用的好習慣。你可以使用這個作爲
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;
..
}
}
你不應該這樣做,除非你肯定要這樣做。如果有更好的方法可以做到這一點,那就使用它。例如,有些人使用它來訪問配置變量,但更好的方法是使用define()
語句或靜態類和文件。
TL; DR - 只有在必須的情況下才可以。否則,不要。
海事組織是非常糟糕的。你讓你的課程依賴於一個外部變量。在這個變量不存在的上下文中實例化的對象將不起作用。
將變量傳遞給類的構造函數。這樣,只有提供參數時才能實例化對象。
這就是我的意思,謝謝你的例子。 – 2011-03-07 12:04:33