在静态类方法中,调用get_called_class()
和static::class
有什么区别?
例如:
class Base
{
public static function foo()
{
return static::class;
}
public static function bar()
{
return get_called_class();
}
}
class Child extends Base {}
echo Base::foo(); // prints 'Base'
echo Base::bar(); // prints 'Base'
echo Child::foo(); // prints 'Child'
echo Child::bar(); // prints 'Child'
看起来在这两种情况下它的工作方式都是相同的,但是我应该注意一些细微差别。
static::class
更快且与get_called_class
的功能相同,现代应用程序中没有理由使用后者? - Kuba Szymanowski