static 是定義一個靜態物件或靜態變量,關於static 定義的變數或類別方法有什麼特性我們看完本文章的相關實例後就見分曉了。
1. 建立物件$object = new Class(),然後使用」->」呼叫:$object->attribute/function ,前提是該變數/方法可存取。
2. 直接呼叫類別方法/變數:class::attribute/function,無論是靜態/非靜態都可以。但是有前提條件:
A. 如果是變量,需要該變數可存取。
B. 如果是方法,除了方法可存取外,還需要滿足:
b1) 如果是靜態方法,沒有特殊條件;
b2) 如果是非靜態方法,則需要改方法中沒有使用$this,也就是沒有呼叫非靜態的變數/方法,當然,呼叫靜態的變數/方法沒有問題。
然後我們再看一下使用$object->… 和使用class::…都有什麼差別:
1. 使用$object->… ,需要執行建構子建立物件;
2. 使用class::… 呼叫靜態方法/變量,不需要執行建構子建立物件;
3. 使用class::… 呼叫非靜態方法/變量,也不需要執行建構函數創建物件。
然後奇怪的地方就出來了,既然2和3都一樣,那靜態方法/變數存在還有什麼意義呢?
靜態 static
宣告類別成員或方法為 static ,就可以不實例化類別而直接訪問,不能透過一個物件來存取其中的靜態成員(靜態方法除外)。靜態成員屬於類,不屬於任何物件實例,但類別的物件實例都能共用。
程式碼如下:
class Child{ public $name; //这里定义并初始化一个静态变量 $nums public static $nums=0; function construct($name){ $this->name=$name; } public function join_game(){ //self::$nums 使用静态变量 self::$nums+=1; echo $this->name."加入堆雪人游戏"; } } //创建三个小孩 $child1=new Child("李逵"); $child1->join_game(); $child2=new Child("张飞"); $child2->join_game(); $child3=new Child("唐僧"); $child3->join_game(); //看看有多少人玩游戏 echo "<br/> 有这".Child::$nums;
以上是php中靜態變數的基本用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!