私がやろうとしているのは、特定の基本クラスを拡張するすべてのサブクラスを見つけることです。
これはhttps://stackoverflow.com/a/436204/1369417とよく似ていますが、関数が呼び出されたときにクラスがロードされない点が異なります。
基本的に、私がやりたいことは次のとおりです。
- ディレクトリにすべての PHP ファイルを含めます。
- 各インクルードが基本クラスの新しいサブクラスを導入したかどうかをテストします。
しかし、PHP ファイルをインクルードすることによって発生する可能性のあるエラーや警告から保護されるように、隔離された PHP 環境でインクルードを実行したいと考えています。
以下に小さな例を示します。
BaseClass.php
<?php
abstract class BaseClass {}
?>
FirstSubclass.php
<?php
class FirstSubclass extends BaseClass {}
?>
Blah.php
<?php
class SecondSubclass extends BaseClass {}
?>
悪いコード.php
<?php
adfgklmdflgksdfge@#4234t0q3
?>
main.php
<?php
require('BaseClass.php');
print_r(find_subclasses(BaseClass));
?>
期待される出力
Array (
[FirstSubclass.php] => FirstSubclass,
[Blah.php] => SecondSubclass,
)