首页 > 解决方案 > PHP:是否可以从特征静态方法中使用特征获取类的名称?

问题描述

可以从属于该特征的静态方法中确定使用特征的类的名称吗?

例如:

trait SomeAbility {
    public static function theClass(){
        return <name of class using the trait>;
    }
}

class SomeThing {
    use SomeAbility;
    ...
}

获取类名:

$class_name = SomeThing::theClass();

我的直觉是,可能不是。我还没有找到任何其他建议。

标签: phptraits

解决方案


使用后期静态绑定static

trait SomeAbility {
    public static function theClass(){
        return static::class;
    }
}

class SomeThing {
    use SomeAbility;
}

class SomeOtherThing {
    use SomeAbility;
}

var_dump(
    SomeThing::theClass(),
    SomeOtherThing::theClass()
);

// string(9) "SomeThing"
// string(14) "SomeOtherThing"

https://3v4l.org/mfKYM


推荐阅读