php - PHP:是否可以从特征静态方法中使用特征获取类的名称?
问题描述
可以从属于该特征的静态方法中确定使用特征的类的名称吗?
例如:
trait SomeAbility {
public static function theClass(){
return <name of class using the trait>;
}
}
class SomeThing {
use SomeAbility;
...
}
获取类名:
$class_name = SomeThing::theClass();
我的直觉是,可能不是。我还没有找到任何其他建议。
解决方案
使用后期静态绑定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"
推荐阅读
- android - 如何检测导航栏样式是手势还是三个按钮或两个
- sql - 如何使用 Query 删除 Oracle 数据库中的反转值?
- r - 通过任何输入更改下载按钮自动清除
- javascript - 使用来自 componentDidMount React 中的 fetch 的属性渲染组件
- .net - 本地计算机上的 windows Service 服务启动然后停止
- wordpress - .htaccess 在 bitnami wordpress 中的位置
- mysql - 如何直接在 MySQL Workbench 中编辑值?
- tcl - 在 TCL 语言中理解正则表达式有困难
- javascript - 使用graphql查询检查反应js中的空对象
- php - 如何每天自动运行php文件