首頁 >後端開發 >PHP問題 >php const和static變數的差別是什麼

php const和static變數的差別是什麼

青灯夜游
青灯夜游原創
2021-03-31 18:15:562596瀏覽

區別:const一旦定義不可更改,static修飾的變數是可以被更改的。 const只可以修飾類別的屬性,不能修飾類別的方法;static可以修飾屬性,也可以修飾方法。

php const和static變數的差別是什麼

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

PHP中static 與const 變數的差異

static變數

1.static靜態變數我們可以對其進行修改,但是const變數我們不能對其進行修改
2.static 靜態變數可以對其修改權限
3.和java類似,在類別的內部,satic修飾的方法的體內無法存取類別的非staic成員變數,只能存取類別的staic變數和類別的const常數

class staticTest1 {
    var $var1 = "hello";
    public static $var2 = "hellostatic"; //public, protected, private
    const var3 = "helloconst";
    public static function displayDifferent(){
###        echo $this->$var1."<br>";//不能访问普通变量
        echo staticTest1::$var2."<br>";//可以访问类的静态变量
        echo self::var3."<br>";//不能用$this::var3, self::var3代表当前类,$this::var3代表当前对象
    }
}

//可以用兩種方法呼叫方法

//第一种,通过对象调用
$test1 = new staticTest1();
echo $test1->displayDifferent();
echo "<br>";
//第二种,通过类调用
echo staticTest1::displayDifferent();
echo "<br>";

順便一提,”::” 對於物件而言只能存取靜態變數和方法,還有self只能用”::”來呼叫當前類別的成員

const變數

1.const變數只能修飾成員變量,不能修飾方法
2.不需要加修飾權限
#3 .因為const變數屬於整個類別的,不屬於某個對象,所以不能透過物件來訪問,像$this->constvariable就不允許

class constTest1 {
    var $var1 = "welcome";
//    public const pi = 3.14;//不能加修饰权限
    const pi = 3.14;
//    const function displayDifferent() {//function前不能加const
//        
//    }
   function displayDifferent() {
        echo self::pi."<br>";
//        echo $this::pi."<br>"; 
    }
    static function displayDifferent2() {
        echo self::pi."<br>";
//        echo $this::pi."<br>"; //这句话不行。
    }
}

兩種方法呼叫

//第一种,通过对象调用
$test2 = new constTest1();
echo $test2->displayDifferent();
//第二种,通过类调用
//echo constTest1::displayDifferent();//对象名用"::"只能访问静态变量和方法,所以这个不行

echo constTest1::displayDifferent2();

推薦學習:《PHP影片教學

以上是php const和static變數的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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