self 不会指向实例化的类,而指向本身所在的类, 调用顺序->在本身类中找->找不到报异常
static 指向实例化的类,调用顺序是 从实例化类中找–>然后找父类–>找不到报异常
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class Boo { protected static $str = "This is class Boo"; public static function get_info(){ echo get_called_class().PHP_EOL; echo self::$str.PHP_EOL; echo static::$str.PHP_EOL; } public function __get($name){ return $name; } } class Foo extends Boo{ protected static $str = "This is class Foo"; } Foo::get_info(); /* result: Foo This is class Boo This is class Foo self 不会指向实例化的类,而指向本身所在的类, 调用顺序->在本身类中找->找不到报异常 static 指向实例化的类,调用顺序是 从实例化类中找-->然后找父类-->找不到报异常 */ |
未经允许不得转载:开心乐窝-乐在其中 » php中 static 和 self的区别