This library helps you locate classes, interfaces, traits, and enums in PHP code. The construct finder locates all code constructs located in a directory.
composer require league/construct-finder
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();
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
Provide multiple directories to search from in one go.
use League\ConstructFinder\ConstructFinder;
// Find all constructs
$constructs = ConstructFinder::locatedIn(
__DIR__ . '/SomeDirectory',
__DIR__ . '/AnotherDirectory',
)->findAll();
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();