palantir / descriptor
dev-master
2023-05-16 02:24 UTC
Requires
- php: ^8.2
Requires (Dev)
- phpunit/phpunit: ^10.1
This package is not auto-updated.
Last update: 2024-11-13 02:28:17 UTC
README
Palantir is a fluent API built over top of Reflection Classes. Its aim is to provide a robust and easy-to-use method to drill down for certain conditions (parameters, etc.).
Experimental API
This is just something I have messed with... who knows whether it's a good idea (for performance and/or DX reasons). Under the hood, a combination of new collection objects and FilterIterator
are being used.
// Retrieves all methods for the `ClassDescriptor` class. $methods = ClassDescriptor::for(ClassDescriptor::class)->methods(); // Retrieves _only_ methods which are public and named "isFinal." $namedFinal = $methods->public()->name('isFinal'); // Retrieves all methods which are static or named "isFinal" (this leaves the original `$methods` variable alone). $staticOrNamedFinal = $methods ->anyOf( $methods ->static() ->name('isFinal') ); // Outputs "7" echo $methods->count(), PHP_EOL; // Outputs "1" echo $namedFinal->count(), PHP_EOL; // Outputs "2" echo $staticOrNamedFinal->count(), PHP_EOL; // Results in 7 method names foreach ($methods as $method) { echo $method->name(), PHP_EOL; } // Results in 1 method name foreach ($namedFinal as $method) { echo $method->name(), PHP_EOL; } // Results in 2 method names foreach ($staticOrNamedFinal as $method) { echo $method->name(), PHP_EOL; }