gpt4 book ai didi

PHP 反射 : How to know if a method/property/constant is inherited from trait?

转载 作者:可可西里 更新时间:2023-11-01 12:18:24 25 4
gpt4 key购买 nike

我想从列表中排除特征的所有继承方法未在类中被覆盖那么如何知道一个类成员是否继承自 trait?

是的,我可以这样检查:

    if ($trait->hasMethod($methodName)
|| $ref->getTraitAliases()[$methodName] !== null)
{
//
}

但是如果类中的 trait 方法被重写了怎么办?怎么知道呢?一种方法是检查方法体是否相似,如果是,我可能会排除它,但是否有更好的方法来实现这一点?

最佳答案

一个更简单的方法是 ReflectionMethod::getFileName()。这将返回特征的文件名,而不是类。

对于 trait 和 class 在同一个文件中的特殊情况,可以使用 ReflectionMethod::getStartLine(),并将其与 trait 和 class 的开始和结束行进行比较。

对于特质、类和方法都在同一行的异国情调的情况……哦拜托!

关于PHP 反射 : How to know if a method/property/constant is inherited from trait?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30661997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com