vaened / php-tag-finder
Installs: 108 596
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/vaened/php-tag-finder
Requires
- php: ^8.2
- lambdish/phunctional: ^2.1
- phpunit/phpunit: ^11.0
- symfony/finder: ^7.1
- vaened/support: ^v4.0
Requires (Dev)
- symfony/var-dumper: ^7.1
README
Library created to simplify the search for PHP classes based on their parent class/interface.
Installation
You can install the library using composer.
composer require vaened/php-tag-finder
Usage
The definition of tag in this library is understood as an interface or abstract class.
With that in mind, to obtain, for example, all the handlers of a system, it would be enough to search for all the PHP classes that
implement the Handler interface.
$finder = new ClassFinder(...); $classes = $finder->instancesOf(Handler::class);
This will return an associative array, where the key is the physical location of the file on disk and the value is the class it references in the project.
Configuration
The configuration consists of how to create the ClassFinder, for this we must understand 2 concepts, the source where the search will be
performed, and the namespace that represents that location.
- source: the location where you will start looking for tagged classes.
- namespace: the representation of this location in the project.
Example
Let's suppose that the project is called Ecommerce, where the namespace is also Ecommerce\\.
src ├── App │ ├── Categories │ │ └── CreateCategoryHandler.php │ ├─── Products │ │ └── CreateProductHandler.php │ ├── Handler.php
So, to locate only the classes that correspond to the application, in this case you would have to instantiate the ClassFinder to search within the root of the project/App, with its equivalent for the namespace.
$paths = [$rootProyectPath, 'src', 'App']; $finder = new ClassFinder( implode(DIRECTORY_SEPARATOR, $paths), 'Ecommerce\\App' );
License
This library is licensed under the MIT License. For more information, please see the license file.