<?php //php的静态重载技术 class Father { //静态属性 public static $money = 50000; //静态方法 public static function getClass() { //返回当前类名 return __CLASS__; } //静态方法 public static function getMoney() { // return self::getClass().'::'.self::$money; //static用在静态继承的上下文中,动态设置静态成员的调用者(主体) return static::getClass().'::'.static::$money; } } //定义子类,继承自Father class Son extends Father { //复写父类的静态属性 public static $money = 30000; //复写父类的静态方法 public static function getClass() { return __CLASS__; } } //调用Father的静态方法 echo Father::getClass().'<hr>'; echo Father::getMoney().'<hr>'; //调用Son的静态成员 echo Son::$money.'<hr>'; //调用Son的静态方法 echo Son::getClass().'<hr>'; echo Son::getMoney().'<hr>;' ?>
php的延迟静态绑定技术:
self或__CLASS__的限制是在于它们绑定的类是定义该方法的类,在编译时绑定,继承并不会改变绑定的类。
static则是在执行时才绑定类,可以动态绑定当前的类