有什么方法可以从静态关键字中获取派生的类名称?我实际想做的是。

反映派生的班级
检查Wheather,它是否实现指定的类

我有一种静态方法,基类说它的名字 Base::check()我想 Base::check() 将检查接口实现的存在。 Check()方法知道接口的名称。因此,我不需要从外界讲述。

但是,如果无法从静态关键字中获取派生classname,我需要将类名传递给外部世界的方法。这不是一个好的编码原则。

我能做的另一个选择是。我可以做一个 ::instance() 返回的静态方法 this 我可以从返回中做一个get_class。但这也是我的申请原则。

那么第一个方法真的可以吗?还是我需要选择这种选择?还是您还有其他选择?

有帮助吗?

解决方案

我不确定我是否了解您要做什么,尤其是您的意思”从静态关键字获取派生的类名称“。查看以下功能,看看他们是否要做您想做的事:

如果您指的是 晚期静态结合, , 看一下


我想您正在尝试这样做:

class Base
{
    public static function check()
    {
        return in_array('IFoo', class_implements(get_called_class(), FALSE));
        // or
        $instanceClassName = get_called_class();
        return new $instanceClassName instanceof IFoo;
        // or
        $reflector = new ReflectionClass(get_called_class());
        return $reflector->implementsInterface('IFoo');           
    }
}
interface IFoo {};
class Foo extends Base implements IFoo {}

var_dump( Foo::check() );
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top