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 文件 (例如,因为它们具有相同的类名)

这更棘手。如果你想做对,tokenizer 函数可以在 PHP 解析器级别分析文件。在您的文件上运行token_get_all()以找出要查找的文件。

如果您的类遵循一个简单的约定,只需使用正则表达式检查“类类名”就足够了。

于 2010-02-01T16:36:55.100 回答