检查类是否使用特定特征的正确方法是什么?

最佳答案

虽然没有什么可以阻止您使用带有特征的instanceof,但是推荐的方法是将特征与接口(interface)配对。因此,您将拥有:

class Foo implements MyInterface
{
    use MyTrait;
}

其中MyTraitMyInterface的实现。
然后检查接口(interface),而不是像这样的特征:
if ($foo instanceof MyInterface) {
    ...
}

您还可以键入提示,而不能使用特征:
function bar(MyInterface $foo) {
    ...
}

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

关于php - 特质的PHP instanceof,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36515677/

10-11 01:48