PHP中的$this別名,是一個值得注意的特性之一。它常常被使用在類中,用來指向當前對象。在這里,我們將詳細講解$this別名的使用,以及一些與之相關的特性。
$this別名其實就是一個指向當前對象的偽變量。它可以被用來代替當前對象中的一個方法,也可以代替當前對象中的一個屬性。讓我們來看一個例子:
class MyClass{ public $my_var; function __construct($initialize){ $this->my_var = $initialize; } function get_var(){ return $this->my_var; } } $obj = new MyClass("Hello World!"); echo $obj->get_var(); //輸出Hello World!在這個例子中,$this用了兩次。第一次是在構造函數中,用來為當前對象的屬性my_var賦值;第二次是在get_var方法中,用來引用當前對象的屬性my_var。所以,最終輸出了"Hello World!"。 在一個類的內部,可以通過$this來調用當前對象的方法或屬性。并且,$this可以被傳遞到其他函數或方法中,從而讓該函數或方法也有機會引用當前對象的屬性和方法。
class MyClass{ public function my_function(){ $this->my_var = "Hello"; my_other_function($this); } } function my_other_function($obj){ echo $obj->my_var; //輸出Hello }在這里,my_function方法中使用了$this來引用my_var屬性。然后,my_other_function方法接受了一個參數$obj,這個參數就是直接傳遞的$this。因此,在該函數中也可以引用到當前對象的my_var屬性。 需要注意的是,只有在方法中才能使用$this。在類的其他位置,比如在類的屬性聲明中或者在類的構造函數之外,是不能使用$this的。在這些位置,$this會被視為無效的偽變量。 在PHP 5.4版本之前,$this的引用必須在一個變量中進行,然后再用這個變量來訪問屬性和方法。但是在PHP5.4及以上版本中,可以直接在$thie偽變量上使用方法。
class MyClass{ public $my_var; function __construct($initialize){ $this->my_var = $initialize; } function get_var(){ return $this->my_var; } function my_function(){ $this->my_var = "Hello"; echo $this->get_var(); //輸出Hello } } $obj = new MyClass("World!"); $obj->my_function();上面這個例子中,$this偽變量直接通過get_var方法來返回屬性值,并沒有使用中間變量。 盡管$this可以在類中的任意位置使用,但是它只能被用來引用當前對象中的方法和屬性。任何試圖用$this來引用非當前對象的內容,都是會導致錯誤的。 在使用$this時,需要注意一些細節。如果一個類里面的方法調用另一個類里的方法,則在方法中使用$this時,只能引用當前類的對象,而不能引用其他類的對象。 例如:
class MyClass1{ public $my_var = "Hello"; } class MyClass2{ function my_function(){ echo $this->my_class1->my_var; //錯誤: Undefined property: MyClass2::$my_class1 } } $obj1 = new MyClass1(); $obj2 = new MyClass2(); $obj2->my_class1 = $obj1; $obj2->my_function();在這段代碼中,MyClass2類的my_function方法中,試圖通過$this來引用另一個類MyClass1的對象my_class1。但是,這樣的用法是錯誤的,因為$this只能引用當前類中的方法和屬性。如果需要引用其他類中的屬性或方法,應該使用正確的調用方式。 在PHP中,$this別名是非常常用的一個特性,特別是在面向對象編程的場景下。熟練應用它,可以極大地提高程序的開發效率。
上一篇php $this- -
下一篇php $this 寫入