adachsoft / code-search-php
0.1.0
2026-03-13 09:11 UTC
Requires
- adachsoft/code-search-contract: ^0.1.0
- adachsoft/collection: ^3.0
- nikic/php-parser: ^5.0
Requires (Dev)
- adachsoft/php-code-style: ^0.4.2
- friendsofphp/php-cs-fixer: ^3.94
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^13.0
- rector/rector: ^2.3
This package is not auto-updated.
Last update: 2026-03-14 07:37:57 UTC
README
PHP library that provides code search capabilities based on nikic/php-parser.
It parses PHP source files into AST and exposes a high-level, contract-based API for searching classes, methods and type relations.
Features
- Class search by FQCN and kind (class/interface/trait/enum)
- Method search by declaring type, name and visibility
- Type relations search (
extends/implements) - In-memory pagination over search results
- Contract-first public API via
adachsoft/code-search-contract - Designed to be embedded in CLI tools or long-running services
Installation
Install via Composer:
composer require adachsoft/code-search-php
Usage
The main entry point is AdachSoft\\CodeSearchPhp\\PhpParserCodeSearchFacade.
For convenience, you can build a fully configured instance using the factory:
<?php
use AdachSoft\CodeSearchContract\PublicApi\Dto\CodebaseRefDto;
use AdachSoft\CodeSearchContract\PublicApi\Dto\Match\TextMatchDto;
use AdachSoft\CodeSearchContract\PublicApi\Dto\Option\OptionValueMap;
use AdachSoft\CodeSearchContract\PublicApi\Dto\PageRequestDto;
use AdachSoft\CodeSearchContract\PublicApi\Dto\Query\ClassSearchQueryDto;
use AdachSoft\CodeSearchContract\PublicApi\Collection\QueryFilterCollection;
use AdachSoft\CodeSearchContract\PublicApi\ValueObject\MatchAlgorithmId;
use AdachSoft\CodeSearchPhp\PhpParserCodeSearchFacadeFactory;
$factory = new PhpParserCodeSearchFacadeFactory();
$facade = $factory->create();
$codebase = new CodebaseRefDto(__DIR__ . '/src');
$page = new PageRequestDto(50, null);
$match = new TextMatchDto(
'App\\Domain\\SomeClass',
new MatchAlgorithmId('exact'),
new OptionValueMap([]),
);
$query = new ClassSearchQueryDto(
$codebase,
$page,
$match,
null,
new QueryFilterCollection([]),
);
$resultPage = $facade->findClasses($query);
foreach ($resultPage->items as $classSymbol) {
echo $classSymbol->fqcn->value . PHP_EOL;
}
For more details on the public API contracts and DTOs, see
adachsoft/code-search-contract.
Versioning
This library follows semantic versioning. The first tagged release is 0.1.0.
See CHANGELOG.md for a list of changes between versions.