
Busque el código fuente de PHP para las llamadas de funciones y métodos, asignaciones de variables, clases y más directamente desde PHP.
composer require permafrost-dev/php-code-search Para buscar un archivo, use el método search . Su único parámetro puede ser una cadena que contiene un nombre de archivo válido o una instancia de PermafrostPhpCodeSearchSupportFile .
Para buscar una cadena en su lugar, use el método searchCode .
Los métodos de búsqueda devuelven una instancia de PermafrostPhpCodeSearchResultsFileSearchResults , que tiene una propiedad results .
Cada result es una instancia de PermafrostPhpCodeSearchResultsSearchResult con las siguientes propiedades:
node : el elemento específico que se encontrónode->name(): stringlocation : la ubicación en el archivo que se encontró el elementolocation->startLine(): intlocation->endLine(): intsnippet : un fragmento de líneas de código desde el archivo con la línea de resultados en el mediosnippet->toString(): stringfile() (método) : proporciona acceso al archivo que se buscó Para buscar a través del código en una cadena o archivo, use la clase Searcher :
use Permafrost PhpCodeSearch Searcher ;
$ searcher = new Searcher (); Para buscar un archivo, use el método search y el método de searchCode para buscar una cadena de código.
$ searcher
-> functions ([ ' strtolower ' , ' strtoupper ' ])
-> search ( ' ./file1.php ' );
$ searcher
-> variables ([ ' /^one[A-Z]$/ ' ])
-> searchCode ( ' <?php $oneA = "1a"; ' ); Al buscar en cualquiera de los métodos disponibles, se pueden usar expresiones regulares rodeando el nombre con barras / , es decir /testd+/ .
Para buscar variables por nombre, use el método 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 ;
} Para buscar llamadas o definiciones de funciones, use el método functions .
// search for references AND definitions for 'strtolower' and/or 'myfunc'
$ searcher
-> functions ([ ' strtolower ' , ' myfunc ' ])
-> search ( ' file1.php ' ); Para buscar una llamada de método por nombre, use el método methods .
Los nodos de llamadas de método tienen una propiedad args que se puede recorrer para recuperar los argumentos para la llamada del método.
$ 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 ;
}
} Para buscar llamadas de método o propiedad estática, use el método static .
Los términos de búsqueda válidos son un nombre de clase como Cache o un nombre de clase y un nombre de método como Cache::remember .
$ searcher
-> static ([ ' Ray ' , ' Cache::has ' , ' Request::$myProperty ' ])
-> search ( ' ./app/Http/Controllers/MyController.php ' ); Para buscar una definición de clase o una clase creada por la new palabra clave, use el método classes .
$ searcher
-> classes ([ ' MyController ' ])
-> search ( ' ./app/Http/Controllers/MyController.php ' ); Para buscar una asignación variable por nombre de variable, use el método assignments . Nota: El $ debe omitirse.
$ searcher
-> assignments ([ ' myVar ' ])
-> search ( ' ./app/Http/Controllers/MyController.php ' ); Para devolver los resultados de búsqueda sin fragmentos de código asociado, use el método withoutSnippets :
$ searcher
-> withoutSnippets ()
-> functions ([ ' strtolower ' ])
-> search ( ' file1.php ' );./vendor/bin/phpunitConsulte ChangeLog para obtener más información sobre lo que ha cambiado recientemente.
Consulte contribuyendo para obtener más detalles.
Revise nuestra política de seguridad sobre cómo informar vulnerabilidades de seguridad.
La licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.