php面向物件之運算子'::'的用法簡述
運算子“::”相比偽變數$this只能在類的內部使用來說更為強大,運算子“::”可以在沒有任何宣告任何實體的情況下訪問類中的成員方法活成員變數,
注意事項:
這里的關鍵字不再是public、private、protected或者static等,而是以下三種情況:
(1)parent :可以呼叫父類中的成員變數、成員方法和常量;
(2)self:可以呼叫當前類中的靜態成員和常量;
(3)類名:可以呼叫本類中的變數、常量和方法,
<?php class Hero{ const CHARACTER = '奧利安娜'; function __construct(){ echo '5樓要玩中單'.Hero::CHARACTER.'不給就送<br>'; } } class I_Hero extends Hero{ const ROLE = '亞索'; function __construct(){ parent::__construct();//參考父類中的建構式 echo '4樓中單'.self::ROLE.'賊6<br>'; } } $gamer = new I_Hero();
結果見下圖:

php面向物件:類的繼承
子類繼承父類的所有成員變數個方法,包括構造方法,當子類被實體化時,php會現在子類中查詢構造方法,如果子類有自己的構造方法,php會先呼叫子類中的方法;當子類中沒有時,php則去呼叫父類中的構造方法,這也就是我們說的繼承,
類的繼承是通過關鍵字extends
php面向物件之資料隱藏
(1)public
中文翻譯是公共的,顧名思義,就是公開的,不需要隱藏的資料資訊,可以在程式中的任何位置(類內、類外)被其他的類和物件呼叫,子類可以繼承和使用父類中所有的公共成員,
(2)private
中文翻譯為私人的,私有的,被private修飾的變數和方法,只能在所在的類的內部被呼叫和修改,不可以在類的外部被訪問,在子類中也不可以,
<?php class Person{ private $name = '奧利安娜'; public function setName($name){ $this->name = $name; } public function getName(){ return $this->name; } } //正確 $person = new Person(); $person->setName("布里茨"); echo $person->getName(); //錯誤 echo Person::$name;
上述實體中,對私有變數$name的修改與訪問,只能通過呼叫成員方法來實作,如果直接呼叫,就會發生錯誤,
(3)protected
中文翻譯為保護的意思,private關鍵字可以將資料完全隱藏,除了在本類中,別的地方都不可以呼叫,子類中也不可以,但是有些情況是部分變數需要在子類中可以呼叫,但是對另外的類來說,還是要做到封裝,這個時候就要用到我們的protected關鍵字了,
用protected修飾的類成員,可以在本類和子類中被呼叫,但是在其他地方不能被呼叫,
<?php class Person{ protected $name = '奧利安娜'; } class Person1 extends Person{ public function getName(){ echo $this->name; } } //正確 $person = new Person1(); $person->getName();
提示:
雖然在PHP中沒有對修飾變數的關鍵字做強制性的規定和要求,但從面相物件的特征和設計方面考慮,一般使用private和protected關鍵字來修飾變數,以防止變數在類外被直接修改和呼叫,
php面向物件之$this->用法簡述
什么是$this?
$this的意思就是本身,在$this中有個指標,誰呼叫它,他就指向誰,它只能在類內部使用,
<?php class Person{ public $name; public function __construct($name){ $this->name = $name; var_dump($this); } public function showInfo(){ echo $this->name; } } $person = new Person('cyy'); var_dump($person); $person->showInfo(); echo '<br>'; $person = new Person('cyy2'); var_dump($person); $person->showInfo(); echo '<br>';

從上圖我們可以看到結果對比,列印出來的$this和$preson結果是一樣的,也就是說,$preson呼叫了$this,$this指向的就是它,所以說結果是一樣的,因此$this究竟指向哪是由所實體化的物件決定的,指向當前物件實體的指標,包括變數、方法都是如此,也就是印證了我們上面的話誰呼叫它,他就指向誰,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/40940.html
標籤:PHP
上一篇:php面向物件方法
下一篇:PHP三個常用的加密函式
