0

クラスの外部ファイルを確認するにはどうすればよいですか?

モジュールのインストール機能をセットアップしようとしているので、ディレクトリのリストをロードしてから、モジュール ファイルに install というメソッドがあるかどうかを確認しようとしています。したがって、このメソッドを持つモジュールのみがリストに表示されます。

これまでの私のコードは次のとおりです。

$output .= '<div id="module-dialog" title="Add Widget"><form id="widget-list" name="widget-list">

<select name="widgets" size="12" id="widgets-list">';

            $dirHandler = opendir('modules') or die ("Could not open module folder");

            while ($dir = readdir($dirHandler)) {
                if($dir!="." && $dir!=".."){
                    // Code to filter out modules with install class -- goes here
                    $output .='<option>'.$dir.'</option>';
                }
            }


 $output .='</select></form></div>';

モジュールのファイル名はディレクトリ名と同じです。例: フォルダー:Admin、ファイル:Admin.php

これができない場合は、インストール機能のためだけに別のファイルを作成すると思います。

4

1 に答える 1

0

「PHP ファイルが特定のクラスを定義しているかどうかを調べるにはどうすればよいですか?」という意味だと思います。

分析したい各PHPファイルを含めることができれば

簡単です:get_declared_classes()含める前と後の結果を比較するだけです:

$before = get_declared_classes();
include "myfile.php";
$after = get_declared_classes();
$new_classes = array_diff($before, $after);
print_r($new_classes);  // Outputs all classes defined in myfile.php

PHP ファイルをインクルードできない場合 (クラス名が同じなど)

これはもっとトリッキーです。正しく行いたい場合は、トークナイザー関数を使用して、PHP パーサー レベルでファイルを分析できます。ファイルでtoken_get_all()を実行して、探すファイルを見つけます。

クラスが単純な規則に従っている場合、正規表現を使用して「class classname」をチェックするだけで十分な場合があります。

于 2010-02-01T16:36:55.100 に答える