PHP OOP:获取已扩展另一个父类的所有声明的类

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP OOP:获取已扩展另一个父类的所有声明的类脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要获取所有声明的类,这些类已经扩展了另一个父类.

所以例如……

class ParentClass {

}

class ChildOne extends ParentClass {

}

class ChildTwo extends ParentClass {

}

class ChildThree {

}

我需要一个输出这个的数组:

array('ChildOne','ChildTwo')

我是PHP OOP的新手,但基于一些谷歌搜索,我提出了这个解决方案.

$classes = array();

foreach( get_declared_classes() as $class ) {
    if ( is_subclass_of($class,'ParentClass') ){
        array_push($classes,$class);
    }
}

我想问的是,这是做我想做的最佳做法,还是有更好的方法?全局范围将包含许多不是ParentClass的子类的其他类.循环遍历所有声明的类是最好的方法吗?

编辑(澄清目的):

我想要实现的是实例化扩展父类的每个子类.

我想做$childone = new ChildOne; $childtwo = new ChildTwo;对于ParentClass的每个孩子.

解决方法

你的解决方案似乎很好,但我不确定你为什么要这样做.在PHP中没有简单方法可以说’全局地给我所有已声明的某个父类的类’而不实际检查全局每个声明的类.即使你有几百个类加载循环,它也不应该太重,因为它们都在内存中.

如果您尝试仅跟踪特定父级的已加载子类,为什么不创建一个在加载时跟踪它们的注册表?您可以在自动加载器或用于子类或事件的工厂中进行跟踪,只需在类定义之前将某些内容放在类文件的顶部即可.

脚本宝典总结

以上是脚本宝典为你收集整理的PHP OOP:获取已扩展另一个父类的所有声明的类全部内容,希望文章能够帮你解决PHP OOP:获取已扩展另一个父类的所有声明的类所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。