league / construct-finder
Finds classes, interfaces, traits, and enums.
Fund package maintenance!
1.6.0
2025-12-13 13:59 UTC
Requires
- php: ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0
Requires (Dev)
- phpstan/phpstan: ^1.3
- phpunit/phpunit: ^9.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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();