如何查看课程的外部文件?
我正在尝试为我的模块设置安装功能,所以我试图让它加载目录列表,然后检查模块文件是否有一个名为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.php
如果无法做到这一点,我想我会为安装功能创建一个单独的文件。
答案 0 :(得分: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 functions可以分析PHP解析器级别的文件。在您的文件上运行token_get_all(),找出要查找的文件。
如果你的类遵循一个简单的约定,只需使用正则表达式检查“class classname”就足够了。