1 静态成员 2 class Stduent{ 3 private static $a; 4 } 5 6 Student::$a; //需要加 $ ...对静态只有 获取或赋值 7 :: 静态访问符 范围解析符 8 9 在类内部 用 Studen::$a; self::$a; static::$a; 10 11 在继承中 12 静态成员也会被继承 重写。 13 14 self 和 static 的区别。 15 self:永远绑定代码所在的类。 当前定义类 16 static:调用时,确定类。 当前调用类 作用:定义 属性和方法,访问属性和方法。 17 class goods{ 18 public $title='goods'; 19 public static function getTitleSelf(){ 20 echo self::$title; 21 } 22 23 public static function getTitleStatic(){ 24 echo static::$title; 25 } 26 27 } 28 29 class Books{ 30 public $title='books'; 31 } 32 33 echo Books::getTitleSelf(); // echo goods; 34 echo Books::getTitleStatic() // echo books; 35 36 总结经常使用static 符合逻辑。 37 38 echo goods::getTitleSelf(); // echo goods; 39 echo goods::getTitleStatic(); // echo goods; 40 41 总结:当类共享的数据和操作,定义为静态属性。 42 被类独有的数据和操作,定义为非静态属性。 43 44 class Student{ 45 pirvate static $s_count; //记录学生 增加 ++ 46 47 public function __construct(){ 48 echo ++static::$s_count; 49 } 50 51 //当对象被销毁时候 ,应该减去 52 public function __destruct(){ 53 echo --static::$s_count; 54 } 55 56 public function __clone(){ //当对象被克隆的时候 57 echo ++static::$s_count; 58 } 59 } 60 61 绑定在类上的关键字:self 当前定义类 parent 父类 static 当前调用类 62 63 语法细节: 64 无论通过类或者对象都可以调用 静态 和 非静态。 局限于 方法。 属性不可以。 65 66 规范化: 对象只调用非静态。 类只调用静态。 67 68 class Demo{ 69 public function nonStaticFunc(){ 70 echo "non static"; 71 } 72 public static function statucFunc(){ 73 echo "static fun"; 74 } 75 } 76 77 $d = new Demo(); 78 $d->nonstaticFunc(); //执行输出结果 79 $d->staticFunc(); //执行输出结果 会报告一个 语法不严谨警告。