我想做的是找到扩展某个基类的所有子类。
这与https://stackoverflow.com/a/436204/1369417非常相似,只是在调用函数时不会加载类。
本质上,我希望做的是:
- 将所有 PHP 文件包含在一个目录中。
- 测试每个包含是否引入了基类的新子类。
但是我想在一个隔离的 PHP 环境中进行包含,这样我就可以免受包含 PHP 文件可能引入的任何错误和警告的影响。
这是一个小例子:
基类.php
<?php
abstract class BaseClass {}
?>
FirstSubclass.php
<?php
class FirstSubclass extends BaseClass {}
?>
废话.php
<?php
class SecondSubclass extends BaseClass {}
?>
坏代码.php
<?php
adfgklmdflgksdfge@#4234t0q3
?>
主文件
<?php
require('BaseClass.php');
print_r(find_subclasses(BaseClass));
?>
预期产出
Array (
[FirstSubclass.php] => FirstSubclass,
[Blah.php] => SecondSubclass,
)