用于特征的 PHP 实例

2022-08-30 14:10:15

检查一个类是否使用某种特征的正确方法是什么?


答案 1

虽然没有什么可以阻止您使用方法来确定类是否使用特征,但推荐的方法是将特征与接口配对。因此,您将拥有:

class Foo implements MyInterface
{
    use MyTrait;
}

其中 是 的实现。MyTraitMyInterface

然后,您检查界面而不是这样的特征:

if ($foo instanceof MyInterface) {
    ...
}

你还可以键入 hint,这是你不能用特征做的:

function bar(MyInterface $foo) {
    ...
}

如果您绝对需要知道某个类是否正在使用某个特征或实现,则可以向接口添加另一个方法,该方法根据实现返回不同的值。


答案 2

可以使用函数获取类使用的所有特征的数组。class_uses

然后,检查此数组是否具有与要测试的特征同名的密钥。

如果是这样,那么你的班级正在使用你的特质。如果没有,那么它就不使用它。


推荐