gpt4 book ai didi

php - 是否应该使用反射或实例化来判断一个类是否存在并实现了一个接口(interface)?

转载 作者:行者123 更新时间:2023-12-02 06:11:35 25 4
gpt4 key购买 nike

我想判断一个类是否存在,是否实现了接口(interface)。以下两项都应该有效。应该首选哪个,为什么?

//检查类是否存在,实例化并查看是否实现了Annotation

  if(class_exists($classname)){
$tmp=new $classname;
if($obj instanceof Annotation) {//do something}
}

//判断类是否存在,对其进行反射,判断是否实现了Annotation

  if(class_exists($classname)){
$r=new new ReflectionClass($classname);
if($r->implementsInterface('Annotation)) {//do something}
}

最佳答案

检查这些函数

  • class_implements返回给定类实现的接口(interface)
  • class_parents返回给定类的父类
  • is_a检查对象是否属于此类或将此类作为其父类之一

Reflection 类相比,我更喜欢这些类来自省(introspection)类或其实例。 The Reflection API用于逆向工程类

还有许多其他有用的 native 函数,如 interface_existsproperty_exists , etc .

关于php - 是否应该使用反射或实例化来判断一个类是否存在并实现了一个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2049759/

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