PHP code example of caue-santos / auto-class-discovery
1. Go to this page and download the library: Download caue-santos/auto-class-discovery 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/ */
caue-santos / auto-class-discovery example snippets
use CaueSantos\AutoClassDiscovery\Facades\AutoClassDiscovery;
$discovered = AutoClassDiscovery::discover(app_path('Domain'));
// $discovered = ['class' => [...], 'interface' => [...], 'trait' => [...], 'enum' => [...]]
foreach ($discovered['class'] as $fqcn => $definition) {
// $definition is a CaueSantos\AutoClassDiscovery\Support\ClassDefinition
}
AutoClassDiscovery::discover(app_path('Domain'));
AutoClassDiscovery::classes(); // every discovered class
AutoClassDiscovery::implementing(ShouldQueue::class); // classes implementing an interface
AutoClassDiscovery::extending(Model::class); // classes extending a base class
AutoClassDiscovery::using(HasFactory::class); // classes using a trait
AutoClassDiscovery::withAttribute(AsCommand::class); // classes carrying a PHP attribute
$definition->class; // "App\Models\User"
$definition->type; // "class" | "interface" | "trait" | "enum"
$definition->interfaces; // ["Illuminate\Contracts\Auth\Authenticatable", ...]
$definition->parents; // every ancestor class, most-derived first
$definition->traits; // traits used directly by the class
$definition->attributes; // fully qualified names of PHP attributes declared on it
$definition->abstract; // bool
$definition->final; // bool
$definition->enum; // bool
$definition->file; // absolute path it was found in, or null for manualDiscover()
$definition->isClass();
$definition->isInterface();
$definition->isTrait();
$definition->isEnum();
$definition->isAbstract();
$definition->isFinal();
$definition->isInstantiable(); // a non-abstract class
$definition->implements(Authenticatable::class);
$definition->extends(Model::class);
$definition->uses(HasFactory::class);
$definition->hasAttribute(AsCommand::class);
$definition->attributeInstances(AsCommand::class); // instantiated attribute objects, args and all
$definition->shortName(); // "User"
$definition->namespace(); // "App\Models"
$definition->newInstance(...$args); // throws if not instantiable
$definition->reflection(); // a fresh ReflectionClass
$definition->toArray(); // plain array, also used by json_encode()
AutoClassDiscovery::discover([
'repositories' => app_path('Repositories'),
'policies' => app_path('Policies'),
]);
AutoClassDiscovery::classes('repositories');
AutoClassDiscovery::implementing(RepositoryContract::class, 'policies'); // scoped to one group