如果我在PHP中扩展一个静态类,并且父类引用“self ::”,那么这会引用扩展类中的self吗?
所以,例如
<?php
Class A
{
static $var
public static function guess(){self::$var = rand(); return $var}
}
Class B extends Class A
{
public static function getVar(){return self::$var}
}
如果我跑了 B ::猜测(); 然后B :: getVar();
是存储在A :: $ var或B :: $ var?
中的Var的值谢谢。
答案 0 :(得分:5)
Late static binding在PHP 5.3中引入,它允许您控制此行为。
答案 1 :(得分:3)
很容易测试:
class ClassA {
public static function test(){ self::getVar(); }
public static function getVar(){ echo 'A'; }
}
class ClassB extends ClassA {
public static function getVar(){ echo 'B'; }
}
ClassA::test(); // prints 'A'
ClassB::test(); // also prints 'A'
...希望有所帮助:)