定义一个静态成员
class Human { public $name; protected $age; private $money; public static $class= '三年二班'; }
静态成员的作用
静态数据成员可以实现一个类中不同对象的某个数据的值是一样的(方便维护,)。一个类中包含的数据成员有:班级,姓名,年龄,性别。那么对于一个班的几个同学,班级的值一定是一样的。假设每一个学生就是一个对象,那么不同的对象的数据中,班级这个数据就是一样的。
所以这也就是静态的数据成员的意义,当班级的数据前加上static关键字后,班级被定义为静态数据成员,当这个值改变时,该类实例化出的每一个对象的班级数据全部随之改变。
静态数据成员的特性
静态数据成员属于类,而不属于某一个对象。
在实例化时,类只会把非静态的属性copy一份到新创建的对象空间中,var_dump($man)可以看出对象空间里面有哪些属性
<?php class Human { public $name; protected $age; private $money; public static $class= '三年二班'; } $man = new Human('Tom',18,1000); var_dump($man); //object(Human)#1 (3) { ["name"]=> string(3) "Tom" ["age":protected]=> int(18) ["money":"Human":private]=> int(1000) }
---------------分割线--------------分割线--------------
在外部访问静态成员
<?php class Human { public $name; protected $age; private $money; public static $clas= '三年二班'; public function __construct($name,$age,$money) { $this->name = $name; $this->age = $age; $this->money = $money; } //public方法 public static function sayName(){ var_dump(self::$clas); } } $man = new Human('Tom',18,1000); var_dump(Human::$clas); var_dump($man::$clas); Human::sayName();
在内部和外部访问静态成员需要::操作符号,需要加$符号;
静态数据成员属于类,因此类不可以获取对象属性和方法
常量成员
常量成员只能为属性,用法
产量成员
<?php class Human { const salary = 'xxx'; public $name; protected $age; private $money; public static $clas= '三年二班'; public function __construct($name,$age,$money) { $this->name = $name; $this->age = $age; $this->money = $money; }$man = new Human('Tom',18,1000); var_dump($man); //object(Human)#1 (3) { ["name"]=> string(3) "Tom" ["age":protected]=> int(18) ["money":"Human":private]=> int(1000) }
可以看到常量数据类的数据;