我发现在某些情况下,通过对象调用静态方法非常方便。
我想知道这是否被认为是一种不好的实践?
或者这个特性将在未来的PHP版本中被移除?
我想知道这是否被认为是一种不好的实践?
或者这个特性将在未来的PHP版本中被移除?
class Foo
{
public static function bar ()
{
echo 'hi';
}
}
class SubFoo extends Foo
{
public static function bar ()
{
echo 'hi subfoo';
}
}
// The normal way to call a static method.
Foo::bar(); // => "hi"
// Call the static method via instance.
$foo = new Foo;
$foo::bar(); // => "hi"
// Here is the use case I found calling static method via instance is convenient.
function callbar(Foo $foo)
{
// The type-hinting `Foo` can be any subclass of `Foo`
// so I have to figure out the class name of `$foo` by calling `get_class`.
$className = get_class($foo);
$className::bar();
// Instead of the above, I can just do `$foo::bar();`
}
callbar(new SubFoo); // => "hi subfoo"
callbar
函数中使用Foo
进行类型提示,然后只需调用$foo->bar();
即可。 - Daan