类存在于外部文件中

时间:2010-02-01 16:32:46

标签: php file methods external exists

如何查看课程的外部文件?

我正在尝试为我的模块设置安装功能,所以我试图让它加载目录列表,然后检查模块文件是否有一个名为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

如果无法做到这一点,我想我会为安装功能创建一个单独的文件。

1 个答案:

答案 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”就足够了。