// ## 2. 类常量
// * 类常量也类属性一样,也是属于类的, 必须用类访问,不能用对象访问
// * 类常量与类属性的区别是: 类常量不允许修改,而类属性可以修改
// * 类常量与普通常量的命名规则是一致的, 推荐使用大写字母或大写字母+下划线
// * 类常量不需要设置访问限制符,默认行为与`public`是一样的
define('SITE_NAME','PHP中文网'); //define() 函数定义一个常量。
define('COUNTRY','中国');
class demo{ const COUNTRY = '中国'; } $a = new demo(); //echo $a->COUNTRY; // 会报错 echo demo::COUNTRY.'<br>';
点击 "运行实例" 按钮查看在线实例
// 常量的关键词:const
class Demo2{ // 类常量也类属性一样,也是属于类的, 必须用类访问,不能用对象访问 const COUNTRY = '中国'; // 类常量与类属性的区别是: 类常量不允许修改,而类属性可以修改 public static $sex = '女'; public $name; public function __construct($name){ $this->name = $name; } public function getInfo(){ // 类常量在类的内部,访问方式与类属性是一样的 return $this->name.'的性别是:' . self::$sex.',国籍是: ' . self::COUNTRY; } } $obj = new Demo2('刘诗诗'); // // 访问类属性 echo $obj->name, '<br>'; // // // 访问类属性 echo Demo2::$sex, '<br>'; // // // 访问类常量 echo Demo2::COUNTRY, '<br>'; // // // 访问对象方法: 该方法又访问了类属性与类常量 echo $obj->getInfo(); echo '<hr>'; // // // 修改类属性 echo Demo2::$sex = '保密'; // // // 修改类常量: 报错 // // echo Demo2::COUNTRY = '美国'; // // // 可以看到类属性:$sex发生了变化 echo $obj->getInfo(); echo '<hr>';
点击 "运行实例" 按钮查看在线实例