kcs / class-finder
Utility classes to help discover other classes/namespaces
Fund package maintenance!
alekitto
Installs: 404 648
Dependents: 12
Suggesters: 0
Security: 0
Stars: 27
Watchers: 3
Forks: 6
Open Issues: 2
Requires
- php: ^8.1
- thecodingmachine/safe: ^1.0 || ^2.0
Requires (Dev)
- doctrine/annotations: ^1.0
- phpbench/phpbench: ^1.2
- phpdocumentor/reflection: ^4.0 || ^5.0 || ^6.0
- phpunit/phpunit: ^10.5
- roave/better-reflection: ^6.0
- roave/security-advisories: dev-master
- solido/php-coding-standards: dev-master
- symfony/cache: ^5.0 || ^6.0 || ^7.0
- symfony/error-handler: ^5.0 || ^6.0 || ^7.0
README
Utility classes to help discover other classes/namespaces
Installation
$ composer require kcs/class-finder
Usage
Finder helps you to discover classes into your project.
The most common way to discover is to use the provided ComposerFinder
.
This will search for classes using the auto-generated class loader
from composer and resolving PSR-* namespaces accordingly.
Read more in the docs at https://alekitto.github.io/class-finder/
Basic usage
use Kcs\ClassFinder\Finder\ComposerFinder; $finder = new ComposerFinder(); foreach ($finder as $className => $reflector) { // Do magic things... }
Filtering
You can filter classes using the methods exposed by FinderInterface
:
implementationOf(array $interfaces)
: Finds the classes that implements all the given interfaces. You can pass a single interface as string.subclassOf(string $superClass)
: Finds all the classes that are subclasses of the given class.annontatedBy(string $annotationClass)
: Finds all the classes that have the given annotation in the class docblock.withAttribute(string $attributeClass)
: Finds all the classes that have the given attribute applied on the class (PHP >= 8.0) only.in(array $dirs)
: Searches only in given directories.inNamespace(array $namespaces)
: Searches only in given namespaces.filter(callable $callback)
: Custom filtering callback.pathFilter(callable $callback)
: Custom filtering callback for loading files.
License
This library is released under the MIT license.
Contributions
Contributions are always welcome. Please feel free to open a PR or file an issue.
Thank you for reading
A.