1. Go to this page and download the library: Download kafkiansky/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/ */
kafkiansky / discovery example snippets
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\ClassImplements;
$discovery = new Discovery(new ComposerClassmapClassLoader(__DIR__));
var_dump($discovery->discover(new ClassImplements(\Stringable::class))); // discover all interfaces that implement the Stringable interface.
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\ClassImplements;
$discovery = new Discovery(new ComposerClassmapClassLoader(__DIR__));
var_dump($discovery->discover(new ClassImplements([\Stringable::class, \ArrayAccess::class])));
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\ClassImplements;
$discovery = new Discovery(new ComposerClassmapClassLoader(__DIR__));
var_dump($discovery->discover(new ClassImplements(interfaces: [\Stringable::class, \ArrayAccess::class], implementsAll: false)));
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\ClassExtends;
$discovery = new Discovery(new ComposerClassmapClassLoader(__DIR__));
var_dump($discovery->discover(new ClassExtends(\Exception::class)));
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\ClassUses;
$discovery = new Discovery(new ComposerClassmapClassLoader(__DIR__));
var_dump($discovery->discover(new ClassUses(SomeTrait::class)));
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\ClassHasAttributes;
$discovery = new Discovery(new ComposerClassmapClassLoader(__DIR__));
var_dump($discovery->discover(new ClassHasAttributes(SomeAttribute::class)));
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\All;
use Kafkiansky\Discovery\Rules\ClassExtends;
use Kafkiansky\Discovery\Rules\ClassImplements;
$discovery = new Discovery(new ComposerClassmapClassLoader(__DIR__));
var_dump($discovery->discover(
new All(new ClassImplements(\Stringable::class), new ClassExtends(\Exception::class))
));
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\Any;
use Kafkiansky\Discovery\Rules\ClassExtends;
use Kafkiansky\Discovery\Rules\ClassImplements;
$discovery = new Discovery(new ComposerClassmapClassLoader(__DIR__));
var_dump($discovery->discover(
new Any(new ClassImplements(\Stringable::class), new ClassExtends(\Exception::class))
));
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\None;
use Kafkiansky\Discovery\Rules\ClassExtends;
use Kafkiansky\Discovery\Rules\ClassImplements;
$discovery = new Discovery(new ComposerClassmapClassLoader(__DIR__));
var_dump($discovery->discover(
new None(new ClassImplements(\Stringable::class), new ClassExtends(\Exception::class))
));
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\ClassImplements;
use Kafkiansky\Discovery\CodeLocation\Composer\LoadOnlyApplicationCode;
$applicationRoot = __DIR__;
$discovery = new Discovery(
new ComposerClassmapClassLoader($applicationRoot, new LoadOnlyApplicationCode($applicationRoot))
);
var_dump($discovery->discover(new ClassImplements(\Stringable::class)));
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\ClassExtends;
use Kafkiansky\Discovery\CodeLocation\Composer\LoadOnlyApplicationCode;
use Kafkiansky\Discovery\FileNotFound;
$applicationRoot = __DIR__;
$loader = new ComposerClassmapClassLoader($applicationRoot);
$loader = $loader->withClassMapLoader(function (string $path): array {
return [FileNotFound::class => $path . '/src/FileNotFound.php'];
});
$discovery = new Discovery($loader);
var_dump($discovery->discover(new ClassExtends(\Exception::class)));
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\Rules\ClassExtends;
use Kafkiansky\Discovery\CodeLocation\ArrayClassLoader;
use Kafkiansky\Discovery\FileNotFound;
$discovery = new Discovery(new ArrayClassLoader([
FileNotFound::class,
]));
var_dump($discovery->discover(new ClassExtends(\Exception::class)));
use Kafkiansky\Discovery\Cache\DiscoveryWithCache;
use Kafkiansky\Discovery\Cache\Adapter\FilesystemCache;
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\CodeLocation\Composer\LoadOnlyApplicationCode;
use Kafkiansky\Discovery\Rules\ClassImplements;
$appPath = __DIR__;
$cacheDir = __DIR__.'/cache';
$discovery = new DiscoveryWithCache(
new Discovery(new ComposerClassmapClassLoader($appPath), new LoadOnlyApplicationCode($appPath)),
new FilesystemCache($cacheDir)
);
$discovery->discover(new ClassImplements(\Stringable::class));
use Kafkiansky\Discovery\Cache\DiscoveryWithCache;
use Kafkiansky\Discovery\Cache\Adapter\FilesystemCache;
use Kafkiansky\Discovery\Discovery;
use Kafkiansky\Discovery\CodeLocation\Composer\ComposerClassmapClassLoader;
use Kafkiansky\Discovery\CodeLocation\Composer\LoadOnlyApplicationCode;
use Kafkiansky\Discovery\Rules\ClassImplements;
$appPath = __DIR__;
$cacheDir = __DIR__.'/cache';
$discovery = new DiscoveryWithCache(
new Discovery(new ComposerClassmapClassLoader($appPath), new LoadOnlyApplicationCode($appPath)),
new FilesystemCache(directory: $cacheDir, cacheIf: function (): bool {
return \get_env('APP_ENV') === 'production';
});
);
$discovery->discover(new ClassImplements(\Stringable::class));
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.