php static靜態屬性和靜態方法


一、靜態屬性

靜態屬性不可以由對象通過 -> 操作符來訪問。

靜態屬性只能被初始化為文字或常量,不能使用表達式。所以可以把靜態屬性初始化為整數或數組,但不能初始化為另一個變量或函數返回值,也不能指向一個對象。

如何訪問靜態屬性呢?

在類內部:類名::$靜態屬性 或者 self::$靜態屬性

在類外部:類名::$靜態屬性 或者 對象實例::$靜態屬性

class Person{
    public static $nums = 0;    // 靜態屬性的申明
    public function addNum(){
        self::$nums++;
        echo self::$nums;   // 在類里面,可用self關鍵詞訪問靜態屬性
        echo Person::$nums;     // 類可直接訪問靜態屬性
        // echo $this->nums;  // 報錯,靜態屬性不可以由對象通過 -> 操作符來訪問
    }
}
$p1 = new Person();
echo $p1::$nums;    // 對象實例可以這樣訪問靜態屬性

 

二、靜態方法

靜態方法用於操作靜態屬性。所以,靜態方法里面不能操作非靜態屬性。

由於靜態方法不需要通過對象即可調用,所以偽變量$this在靜態方法中不可用。

如何訪問靜態方法呢?

在類內部:類名::靜態方法 或者 self::靜態方法

在類外部:類名::靜態方法 或者 對象實例->靜態方法

class Person{
    public static $nums = 0;    // 靜態屬性的申明
    public $age = 0;
    public function addNum(){
        self::$nums++;
        echo self::$nums;   // 在類里面,可用self關鍵詞訪問靜態屬性
        echo Person::$nums;     // 類可直接訪問靜態屬性
        // echo $this->nums;  // 報錯,靜態屬性不可以由對象通過 -> 操作符來訪問
        self::getNum();     // 在類里面,可用self關鍵詞訪問靜態方法
        Person::getNum();   // 類可直接訪問靜態方法
    }
    public static function getNum(){
        // 靜態方法
        // echo $this->age;  // 報錯,靜態方法里面不能操作非靜態屬性
        echo '真的嗎?'.self::$nums;    //靜態方法中只能操作靜態屬性 
    }
}
$p1 = new Person();
$p1->addNum();
echo $p1::$nums;    // 對象實例可以這樣訪問靜態屬性
Person::getNum();   // 類可直接訪問靜態方法
$p1->getNum();  // 對象實例可以這樣訪問靜態方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM