类存在于外部文件中

发布于 2024-08-20 13:33:59 字数 845 浏览 3 评论 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

如果这不能完成,那么我想我将仅为安装功能创建一个单独的文件。

How do I check an external file for a class?

I am trying to setup a install feature for my modules, so I am trying to get it to load a list of directories and then check if the module file has a method called install. So only the modules with this method will be shown in the list.

Here is my code so far:

$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>';

The module file name is the same as the directory name. example: folder:Admin, file:Admin.php

If this can not be done then I guess I will create a separate file just for the install function.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黎夕旧梦 2024-08-27 13:33:59

我假设您的意思是“如何找出 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() 在您的文件上查找要查找的文件。

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

I assume you mean "How can I find out whether a PHP file defines a certain class?"

If you can include each PHP files you want to analyze

it's easy: Just compare the results of get_declared_classes() before and after the inclusion:

$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

If you can't include the PHP files
(e.g. because they have the same class name)

This is more tricky. If you want to do it right, the tokenizer functions can analyze a file on PHP parser level. Run a token_get_all() on your file to find out which one to look for.

If your classes follow a simple convention, simply checking for "class classname" using a regular expression might be enough.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文