
Поиск PHP -исходный код для вызовов функции и методов, назначений переменных, классов и более непосредственно из PHP.
composer require permafrost-dev/php-code-search Чтобы найти файл, используйте метод search . Его единственным параметром может быть либо строка, содержащая допустимое имя файла, либо экземпляр PermafrostPhpCodeSearchSupportFile .
Чтобы найти строку вместо этого, используйте метод searchCode .
Методы поиска возвращают экземпляр PermafrostPhpCodeSearchResultsFileSearchResults , который имеет свойство results .
Каждый result является экземпляром PermafrostPhpCodeSearchResultsSearchResult со следующими свойствами:
node - конкретный элемент, который был найденnode->name(): stringlocation - Место в файле, что элемент был найденlocation->startLine(): intlocation->endLine(): intsnippet - фрагмент кодовых строк из файла с строкой результата в серединеsnippet->toString(): stringfile() (method) - предоставляет доступ к поисковому файлу Чтобы найти код в строке или файле, используйте класс 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"; ' ); При поиске с использованием любого из доступных методов можно использовать регулярные выражения, окружая имя с помощью чертов / , т.е. /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 для получения дополнительной информации о том, что изменилось в последнее время.
Пожалуйста, смотрите для получения подробной информации.
Пожалуйста, просмотрите нашу политику безопасности о том, как сообщать о уязвимости безопасности.
Лицензия MIT (MIT). Пожалуйста, смотрите файл лицензии для получения дополнительной информации.