首頁  >  文章  >  後端開發  >  PHP物件導向筆記 —— 123 圖解靜態屬性與靜態方法

PHP物件導向筆記 —— 123 圖解靜態屬性與靜態方法

不言
不言原創
2018-04-08 15:47:081765瀏覽

本篇文章介紹的內容是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 &#39;<br >&#39;;// 静态属性只有一个,为所有的对象的共享.$m1 = new Human();$m1->changeHead();$m2 = new Human();$m3 = new Human();echo $m2->getHead(),&#39;<br >&#39;; //9echo $m3->getHead(),&#39;<br >&#39;; //9

PHP物件導向筆記 —— 123 圖解靜態屬性與靜態方法

/*
靜態方法

普通方法,存放於類別內的,只有1份
靜態方法,也是存放於類別內的,只有1份

區別在於:
普通方法需要對象去調動,需要綁定$this
即,普通方法,必須要有對象,且用對象調動

而靜態方法,不屬於哪個對象,屬於類,因此不需要去綁定$this.
即,靜態方法,透過類別名稱就可以調動.
*/

PHP物件導向筆記 —— 123 圖解靜態屬性與靜態方法

class Human2 {
    public $name = &#39;张三&#39;;    static public function cry() {
        echo &#39;5555&#39;;
    }    public function eat() {
        echo &#39;吃饭&#39;;
    }    public function intro() {
        echo $this->name;
    }
}// 此时一个对象都没有Human2::cry();// 下面这个eat是非静态方法,应由对象来调用Human2::eat();/*
报错提示:
Strict standards: Non-static method Human2::eat() should not be called statically
*/echo &#39;<br >&#39;;//Human2::intro();/*
直接报错:
Fatal error: Using $this when not in object context
*/

PHP物件導向筆記 —— 123 圖解靜態屬性與靜態方法

/*
總結:
如上分析,其實非靜態方法,是不能由類別名稱靜態呼叫的.
*/

$lisi = new Human2();$lisi->cry(); //5555

/*
類別->訪問->靜態方法 可以
類別->動態方法 方法內沒有this的情況下,嚴重不支援.邏輯上解釋不通.

物件->存取動態方法 可以
物件->靜態方法 可以
*/

相關推薦:

php物件導向物件繼承、多型、封裝簡介

php物件導向設計原則概述


#

以上是PHP物件導向筆記 —— 123 圖解靜態屬性與靜態方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn