<?php
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变量:类的可变属性
网友评论