在開(kāi)發(fā)PHP應(yīng)用程序時(shí),經(jīng)常會(huì)碰到$this和self這兩個(gè)關(guān)鍵字。這兩個(gè)關(guān)鍵字被廣泛用于類(lèi)中,目的是訪(fǎng)問(wèn)類(lèi)的成員變量和成員函數(shù)。在這篇文章中,我們將討論這兩個(gè)關(guān)鍵字的功能并舉例說(shuō)明。
使用$this
在PHP中,$this指代當(dāng)前對(duì)象。$this使用在類(lèi)的方法里,它允許您在類(lèi)方法中訪(fǎng)問(wèn)和操作類(lèi)中的成員變量和成員函數(shù)。
class Person { private $name = "John"; public function getName() { return $this->name; } } $person = new Person(); echo $person->getName(); // 輸出 "John"
在上面的代碼中,$this->name代表Person類(lèi)中的$name變量。 在getName函數(shù)中使用$this->name會(huì)返回私有屬性$name中的值。
那么,如果沒(méi)有使用$this,程序會(huì)出現(xiàn)什么問(wèn)題呢?比如,如果你嘗試獲取$name,類(lèi)將會(huì)返回錯(cuò)誤信息,因?yàn)樗J(rèn)為$name是一個(gè)未定義的方法
class Person { private $name = "John"; public function getName() { return $name; } } $person = new Person(); echo $person->getName(); // 輸出PHP錯(cuò)誤信息
因此,使用$this關(guān)鍵字是必要的。
使用self
在PHP中,self是一個(gè)代表當(dāng)前類(lèi)自身的關(guān)鍵字。 self常用于靜態(tài)方法和靜態(tài)成員變量的訪(fǎng)問(wèn),也可以在一個(gè)類(lèi)中調(diào)用一個(gè)靜態(tài)方法或靜態(tài)成員變量,而不需要實(shí)現(xiàn)一個(gè)實(shí)例。
class Person { private static $country = "USA"; public static function getCountry() { return self::$country; } } echo Person::getCountry(); // 輸出 "USA"
在這個(gè)例子中,使用self關(guān)鍵字在類(lèi)方法getCountry中訪(fǎng)問(wèn)靜態(tài)成員變量$country。將self::$country替換為$this->$country將會(huì)報(bào)錯(cuò)。
還可以通過(guò)self來(lái)調(diào)用類(lèi)靜態(tài)方法:
class Person { public static function sayHello() { echo 'hello'; } } Person::sayHello(); // 輸出 "hello"
同樣,使用$this->sayHello()將會(huì)報(bào)錯(cuò)。
總結(jié)
在PHP中,$this和self是非常重要的。這些關(guān)鍵字可以幫助您更好地管理和控制類(lèi)的屬性和方法。當(dāng)您在PHP應(yīng)用程序中開(kāi)發(fā)類(lèi)時(shí),請(qǐng)確保您理解并正確使用這兩個(gè)關(guān)鍵字。