2009-12-06 68 views
1

我剛開始熟悉PHP的面向對象功能,我想問你一些關於$this變量的內容。首先,如果我使用的$this關鍵字在一個類中沒有定義的屬性變量foo,這是否意味着,使用下面的代碼:

$this->foo = 5; 
echo $this->foo; 

將在對象上創建foo財產運行時,就像在JavaScript中一樣?這個屬性的可見性是什麼?

+0

我會推薦看看這個[page](http://stackoverflow.com/questions/151969/php-self-vs-this)。 – Aif 2009-12-06 13:37:55

回答

6

是的,這將創建foo屬性,其可見性將爲public(這是默認值)。

你可以很容易地測試:

<?php 
class Foo { 
    public function setFoo($foo) { 
     $this->foo = $foo; 
    } 
} 

$f = new Foo(); 
$f->setFoo(5); 
echo $f->foo; 

將打印5沒有任何錯誤。

1

是的,它當然會。

0

屬性可以添加到任何對象,與其類無關。也可以寫

$obj = new stdClass(); 
$obj->foo = 'bar'; 
3

值得一提的是__get__set神奇的功能。只要調用未定義的屬性,就會調用這些方法。

這使得創建非常酷和動態的對象的方式。適用於具有未知屬性的Web服務。

+0

__construct($ id)也是我的最愛,它允許在從數據庫中提取信息時自動設置用戶等對象。 $ id在這種情況下將通過類聲明傳遞(例如$ obj = new myClass($ id);) – Kaji 2009-12-06 13:50:50