Package utility library for vendor.
Easily and quickly, and you can find a class or interface.
Find the source file from the package.
use HHPack\Package\VendorPackage;
$sources = VendorPackage::fromItems([
Pair { 'package\\examples\\classes\\', realpath(__DIR__ . '/src') }
])->sources();
foreach ($sources as $source) {
var_dump($source->name()); // /path/to/example.hh
var_dump($source->directory()); // /path/to
}
You can select the elements in the following function.
- HHPack\Package\implementsInterface
- HHPack\Package\subclassOf
- HHPack\Package\classes
- HHPack\Package\abstractClasses
- HHPack\Package\traits
- HHPack\Package\interfaces
- HHPack\Package\instantiable
- HHPack\Package\startsWith
- HHPack\Package\endsWith
In the following we are looking for a interface and traits.
use HHPack\Package as package;
use HHPack\Package\VendorPackage;
$interfaces = VendorPackage::fromItems([
Pair { 'Package\\Examples\\Classes\\', realpath(__DIR__ . '/src') }
])->classes(package\interfaces());
foreach ($interfaces as $interface) {
var_dump($interface->name()); // interface
}
$traits = VendorPackage::fromItems([
Pair { 'Package\\Examples\\Classes\\', realpath(__DIR__ . '/src') }
])->classes(package\traits());
foreach ($traits as $trait) {
var_dump($trait->getName()); // trait
}
Get an instance from the source files
use HHPack\Package\VendorPackage;
$instances = VendorPackage::fromItems([
Pair { 'Package\\Examples\\Classes\\', realpath(__DIR__ . '/src') }
])->classes()->map(($class) ==> $class->instantiate());
foreach ($instances as $instance) {
var_dump($instance);
}
You can build a pipeline.
You can achieve when implement the interface Middleware and Stream.
Please look at the example/pipeline.hh for details.
use HHPack\Package\VendorPackage;
use HHPack\Package\Examples\Classes\FileStatTransformer;
use HHPack\Package\Examples\Classes\FileStatOutput;
$package = VendorPackage::fromItems([
Pair { 'Package\\Examples\\Classes\\', realpath(__DIR__ . '/src') }
]);
$package->sources()
->pipeTo(new FileStatTransformer())
->pipeTo(new FileStatOutput());
composer install
composer test