league / construct-finder
Finds classes, interfaces, traits, and enums.
Fund package maintenance!
frankdejonge
Installs: 1 485 037
Dependents: 8
Suggesters: 2
Security: 0
Stars: 42
Watchers: 4
Forks: 4
Open Issues: 0
Requires
- php: ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~7.4.0
Requires (Dev)
- phpstan/phpstan: ^1.3
- phpunit/phpunit: ^9.5
README
This library helps you locate classes, interfaces, traits, and enums in PHP code. The construct finder locates all code constructs located in a directory.
Installation
composer require league/construct-finder
Usage
Finding constructs
You can find all constructs or use a type specific finder.
use League\ConstructFinder\ConstructFinder; // Find all constructs $constructs = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findAll(); $constructNames = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findAllNames(); // Find all classes $constructs = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findClasses(); $constructNames = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findClassNames() // Find all interfaces $constructs = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findInterfaces(); $constructNames = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findInterfaceNames(); // Find all enums $constructs = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findEnums(); $constructNames = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findEnumNames(); // Find all traits $constructs = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findTraits(); $constructNames = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findTraitNames();
Using a construct
Constructs are simple value objects that expose the name and the type.
use League\ConstructFinder\Construct; use League\ConstructFinder\ConstructFinder; // Find all constructs $constructs = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory')->findAll(); /** @var Construct $construct */ $construct = $constructs[0]; $name = $construct->name(); $name = (string) $construct; $type = $construct->type(); // class, trait, interface, enum
Finding in multiple directories
Provide multiple directories to search from in one go.
use League\ConstructFinder\ConstructFinder; // Find all constructs $constructs = ConstructFinder::locatedIn( __DIR__ . '/SomeDirectory', __DIR__ . '/AnotherDirectory', )->findAll();
Excluding files based on exclude patterns
All patterns are match in full. You can use a wildcard (*
) for fuzzy matching.
use League\ConstructFinder\ConstructFinder; // Find all constructs $constructs = ConstructFinder::locatedIn(__DIR__ . '/SomeDirectory') ->exclude('*Test.php', '*/Tests/*') ->findAll();