2012-12-17 60 views
-1

$ this-> id和$ id有什麼區別?

class Test{ 
public $id; 

function Test(){ 
    $this->id = 1; 
} 
} 

===

class Test{ 
public $id; 

function test(){ 
    $id = 1; 
} 
} 

如何從其他類中的變量?

class TestA{ 
public $test; 

function TestA(){ 
    $this->test = new Test(); 
    echo $this->test->id; 
} 
} 
+0

請注意,您缺少一對'}' – elclanrs

回答

9

php不會在某種程度上C++工作,JavaC#工作。

在php中你應該總是使用$this引用和->運算符來訪問實例變量。

所以第一個代碼分配1到實例id屬性,第二你要指定1到本地$id變量。

+2

另請參閱文檔:http://php.net/manual/en/language.variables.scope.php – Daniel

5

有你的例子沒有什麼區別,但是當你有你的方法中使用相同的名稱內使用可變$this->variable_name可能是有用的:

class test{ 
public $id; 

function test($id){ 
    $id = 1;  // method parameter 
    $this->id = 2; // object member 
} 
+0

'$ this-> id'不是類成員,而是實例成員。如果它是靜態的並且以'self :: $ id' – zerkms

+1

的權利訪問,它將是一個類成員。糾正。 – MarcinJuraszek

0

在您的示例中,確實沒有區別。您也可以通過使用$this來限定訪問成員變量,所有成員變量都屬於$this。正如Marin Juraszek所說,考慮範圍很重要。

0

$this->id引用一個類屬性,它可以在類方法中通過其方法訪問。

$id只是一個變量,可以在創建它的本地範圍內訪問。

相關問題