在效率上:常量編譯過程比靜態變量快的多。
代碼:
<?php
error_reporting(E_ALL);
class A {
const c = 9;
public static $b = 5;
public function setst ($ca) {
self::$b = $ca;
}
}
$obj = new A;
echo $obj->c;//出錯,是類的屬性,不是對象的屬性
echo $obj->$b;//出錯,是類的屬性,不是對象的屬性
echo $obj::c;//ok,
echo A::c;//ok
echo $obj::$b;//ok
echo A::$b;//ok
$obj->setst(100);//更改靜態變量的值
echo $obj::$b;//更改成功
?>
結論:
實例的屬性才可以用 $obj->c 這種方式訪問。
靜態變量和常量都是類的屬性,類的屬性都用雙冒號訪問(::),通過對象或者類名都可以訪問。
常量是不可變的,靜態變量可以通過self來賦值改變。
const常量:類的不變屬性
static變量:類的可變屬性
