本篇文章介紹的內容是PHP物件導向中的內容,123圖解靜態屬性與靜態方法,現在分享給大家,有需要的朋友可以參考一下
/*
在屬性,和方法前
加static 修飾,這種稱為靜態屬性/靜態方法.
靜態屬性
靜態屬性存放在類別空間中
1、類別聲明完畢,該屬性就已存在,不需要依賴物件而存取.
2、類別在記憶體中只有一個,因此靜態屬性也只有一個.
*/
class Human { static public $head = 1; public function changeHead() { Human::$head = 9; } public function getHead() { return Human::$head; } }echo Human::$head; //1// 静态属性的访问方法echo '<br >';// 静态属性只有一个,为所有的对象的共享.$m1 = new Human();$m1->changeHead();$m2 = new Human();$m3 = new Human();echo $m2->getHead(),'<br >'; //9echo $m3->getHead(),'<br >'; //9
/*
靜態方法
普通方法,存放於類別內的,只有1份
靜態方法,也是存放於類別內的,只有1份
區別在於:
普通方法需要對象去調動,需要綁定$this
即,普通方法,必須要有對象,且用對象調動
而靜態方法,不屬於哪個對象,屬於類,因此不需要去綁定$this.
即,靜態方法,透過類別名稱就可以調動.
*/
class Human2 { public $name = '张三'; static public function cry() { echo '5555'; } public function eat() { echo '吃饭'; } public function intro() { echo $this->name; } }// 此时一个对象都没有Human2::cry();// 下面这个eat是非静态方法,应由对象来调用Human2::eat();/* 报错提示: Strict standards: Non-static method Human2::eat() should not be called statically */echo '<br >';//Human2::intro();/* 直接报错: Fatal error: Using $this when not in object context */
/*
總結:
如上分析,其實非靜態方法,是不能由類別名稱靜態呼叫的.
*/
$lisi = new Human2();$lisi->cry(); //5555
/*
類別->訪問->靜態方法 可以
類別->動態方法 方法內沒有this的情況下,嚴重不支援.邏輯上解釋不通.
物件->存取動態方法 可以
物件->靜態方法 可以
*/
相關推薦:
以上是PHP物件導向筆記 —— 123 圖解靜態屬性與靜態方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!