
搜索PHP源代码以获取功能和方法调用,可变分配,类以及更多直接从PHP。
composer require permafrost-dev/php-code-search要搜索文件,请使用search方法。它的唯一参数可以是包含有效文件名的字符串,也可以PermafrostPhpCodeSearchSupportFile的实例。
要搜索字符串,请使用searchCode方法。
搜索方法返回一个具有results属性的PermafrostPhpCodeSearchResultsFileSearchResults的实例。
每个result都是PermafrostPhpCodeSearchResultsSearchResult的实例,具有以下属性:
node - 找到的特定项目node->name(): stringlocation - 文件中的文件中的位置location->startLine(): intlocation->endLine(): intsnippet - 文件中的代码线的摘要snippet->toString(): stringfile() (方法) - 提供对已搜索的文件的访问权限要在字符串或文件中搜索代码,请使用Searcher类:
use Permafrost PhpCodeSearch Searcher ;
$ searcher = new Searcher ();要搜索文件,请使用search方法和searchCode方法搜索代码字符串。
$ searcher
-> functions ([ ' strtolower ' , ' strtoupper ' ])
-> search ( ' ./file1.php ' );
$ searcher
-> variables ([ ' /^one[A-Z]$/ ' ])
-> searchCode ( ' <?php $oneA = "1a"; ' );在使用任何可用方法搜索时,可以通过用slashes / ,IE /testd+/名称来使用正则表达式。
要通过名称搜索变量,请使用variables方法。
$ results = $ searcher
-> variables ([ ' twoA ' , ' /^one.$/ ' ])
-> searchCode ( ' <?php ' .
' $oneA = "1a"; ' .
' $oneB = "1b"; ' .
' $twoA = "2a"; ' .
' $twoB = "2b"; ' .
'' );
foreach ( $ results -> results as $ result ) {
echo " Found ' { $ result -> node -> name ()} ' on line { $ result -> location -> startLine }" . PHP_EOL ;
}要搜索函数调用或定义,请使用functions方法。
// search for references AND definitions for 'strtolower' and/or 'myfunc'
$ searcher
-> functions ([ ' strtolower ' , ' myfunc ' ])
-> search ( ' file1.php ' );要按名称搜索方法调用,请使用methods方法。
方法调用节点具有一个可以循环介绍的args属性,以检索方法调用的参数。
$ results = $ searcher
-> methods ([ ' /test(One|Two)/ ' ])
-> searchCode ( ' <?php ' .
' $obj->testOne("hello world 1"); ' .
' $obj->testTwo("hello world", 2); ' .
''
);
foreach ( $ results -> results as $ result ) {
echo " Found ' { $ result -> node -> name ()} ' on line { $ result -> location -> startLine }" . PHP_EOL ;
foreach ( $ result -> node -> args as $ arg ) {
echo " argument: ' { $ arg -> value } ' " . PHP_EOL ;
}
}要搜索静态方法或属性调用,请使用static方法。
有效的搜索术语要么是诸如Cache类的类名称,要么是类名称和诸如Cache::remember 。
$ searcher
-> static ([ ' Ray ' , ' Cache::has ' , ' Request::$myProperty ' ])
-> search ( ' ./app/Http/Controllers/MyController.php ' );要搜索类定义或new关键字创建的类,请使用classes方法。
$ searcher
-> classes ([ ' MyController ' ])
-> search ( ' ./app/Http/Controllers/MyController.php ' );要通过可变名称搜索变量分配,请使用assignments方法。注意:应省略$ 。
$ searcher
-> assignments ([ ' myVar ' ])
-> search ( ' ./app/Http/Controllers/MyController.php ' );要返回没有关联的代码段的搜索结果,请使用withoutSnippets方法:
$ searcher
-> withoutSnippets ()
-> functions ([ ' strtolower ' ])
-> search ( ' file1.php ' );./vendor/bin/phpunit有关最近发生了变化的更多信息,请参见ChangElog。
请有关详细信息,请参阅贡献。
请查看我们有关如何报告安全漏洞的安全政策。
麻省理工学院许可证(麻省理工学院)。请参阅许可证文件以获取更多信息。