PHP OOP:获取已扩展另一个父类的所有声明的类
发布时间:2020-12-13 16:48:35 所属栏目:PHP教程 来源:网络整理
导读:我需要获取所有声明的类,这些类已经扩展了另一个父类. 所以例如…… class ParentClass {}class ChildOne extends ParentClass {}class ChildTwo extends ParentClass {}class ChildThree {} 我需要一个输出这个的数组: array('ChildOne','ChildTwo') 我是P
我需要获取所有声明的类,这些类已经扩展了另一个父类.
所以例如…… 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中没有简单的方法可以说’全局地给我所有已声明的某个父类的类’而不实际检查全局每个声明的类.即使你有几百个类加载循环,它也不应该太重,因为它们都在内存中.
如果您尝试仅跟踪特定父级的已加载子类,为什么不创建一个在加载时跟踪它们的注册表?您可以在自动加载器或用于子类或事件的工厂中进行跟踪,只需在类定义之前将某些内容放在类文件的顶部即可. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |