如何在不执行类的情况下解析它


how to parse a class without executing it

我需要解析我的类(它们在单独的文件中)并搜索指定的变量或方法,然后如果有该变量,则必须执行它。

我尝试了一些方法:

  1. 我曾经用preg_match来解析我的文件,寻找一些模式。不是一个好主意)

  2. 之后,我尝试了一些不够好的代码解析器扩展。

  3. 最后我尝试ArrayObject课,它根本不好。因为它解析的是对象而不是类)

有什么办法可以做到这一点吗?

伪代码:

$file = file_get_content("dir/myClassFile.php");
$classname='foo';
if(there was '$variable=x' in $classname)
    include "dir/myClassFile.php";

编辑

文件内容:

class foo {
    var include = true; //1st
    function bar()
    {
        $this->include = true; //2nd 
    }
}

我需要检查是否包含是 ture 然后我必须包含然后文件。

对于简单的语法检查,在命令行上使用php有很长的路要走。 只需致电:

$ php -l <filename>

有关更复杂的工具,请查看Sebastian Bergmann的github。他是phpunit的作者,并开发了一些非常有用的工具,用于检测复制粘贴的代码,死代码等。

Github帐户

最好使用 PHPUnit 测试您的类,以确保它们正常运行/工作。

还有这个PHP代码嗅探器也可能被使用。