PHP code example of gears / class-finder
1. Go to this page and download the library: Download gears/class-finder library. Choose the download type require. 2. Extract the ZIP file and open the index.php. 3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
gears / class-finder example snippets
// Make sure you grab the composer ClassLoader instance, the class finder needs it.
$composer = rformed but could be in the future.
$finder = new Gears\ClassFinder($composer);
// Find all classes inside a namespace
$classes = $finder->namespace('Foo\\Bar')->search();
// Returns an array like:
$classes =
[
'/home/user/project/vendor/foo/src/Bar/Baz.php' => 'Foo\\Bar\\Baz',
'/home/user/project/vendor/foo/src/Bar/Qux.php' => 'Foo\\Bar\\Qux',
'etc...'
];
// Find all classes inside a namespace that implement an interface.
$classes = $finder->namespace('Foo\\Bar')->implements('SomeInterface')->search();
// OR you can use the PHP 5.5 ::class operator
$classes = $finder->namespace('Foo\\Bar')->implements(SomeInterface::class)->search();
// Or filter by parent classes
$classes = $finder->namespace('Foo\\Bar')->extends(SomeParent::class)->search();
// NOTE: You can't do both out of the box.
$classes = $finder->namespace('Foo\\Bar')
// This is now allowed!
->implements(SomeInterface::class)
->extends(SomeParent::class)
->search();
// Although you could supply your own custom filter that implemented whatever filtering you like.
$classes = $finder->namespace('Foo\\Bar')->filterBy(function($rClass ReflectionClass)
{
/* custom logic goes here, must return true or false */
})->search();
// ClassFinder also implements the IteratorAggregate & Countable interfaces.
$number = $finder->namespace('Foo\\Bar')->count();
foreach ($finder->namespace('Foo\\Bar') as $filepath => $fqcn)
{
}