PHP code example of ergebnis / attribute-collector
1. Go to this page and download the library: Download ergebnis/attribute-collector 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/ */
ergebnis / attribute-collector example snippets
declare(strict_types=1);
use Ergebnis\AttributeCollector;
$attributeClassName = AttributeCollector\Name\ClassName::fromString(\Deprecated::class);
/** @var AttributeCollector\AttributeCollection $attributeCollector */
$filteredAttributeCollection = $attributeCollector->whereAttributeClassNameEquals($attributeClassName);
declare(strict_types=1);
use Ergebnis\AttributeCollector;
$attributeLocation = AttributeCollector\Location\ClassMethodLocation::create(
AttributeCollector\Name\ClassName::fromString(Foo::class),
AttributeCollector\Name\MethodName::fromString('bar')
);
/** @var AttributeCollector\AttributeCollection $attributeCollector */
$filteredAttributeCollection = $attributeCollector->whereAttributeLocationEquals($attributeLocation);
declare(strict_types=1);
use Ergebnis\AttributeCollector;
use Ergebnis\Classy;
use Symfony\Component\Finder;
$finder = Finder\Finder::create()
->files()
->in(__DIR__ . '/src');
$classyConstructCollector = new Classy\Collector\DefaultConstructFromFinderCollector(new Classy\Collector\PhpTokenTokenizeConstructFromSourceCollector()));
$classyConstructs = $classyConstructCollector->collectFromFinder($finder);
$classNames = array_map(static function (Classy\Construct $construct): AttributeCollector\Name\ClassName {
return AttributeCollector\Name\ClassName::fromString($construct->name()->toString());
}, $classyConstructs);
$attributeCollector = new AttributeCollector\Collector\TraversingAttributeFromClassNameCollector();
$attributeCollection = $attributeCollector->collectFromClassName(...$classNames);
foreach ($attributeCollection->toArray() as $attribute) {
$instance = $attribute->instance();
// inspect or process concrete attribute instance here
}
declare(strict_types=1);
use Ergebnis\AttributeCollector;
$classNames = [
AttributeCollector\Name\ClassName::fromString(Foo::class),
AttributeCollector\Name\ClassName::fromString(Bar::class),
AttributeCollector\Name\ClassName::fromString(Baz::class),
];
$attributeCollector = new AttributeCollector\Collector\TraversingAttributeFromClassNameCollector();
$attributeCollection = $attributeCollector->collectFromClassName(...$classNames);
foreach ($attributeCollection->toArray() as $attribute) {
$instance = $attribute->instance();
// inspect or process concrete attribute instance here
}
declare(strict_types=1);
use Ergebnis\AttributeCollector;
use Symfony\Component\Finder;
$finder = Finder\Finder::create()
->files()
->in(__DIR__ . '/src');
$attributeCollector = new AttributeCollector\Collector\TraversingAttributeFromFinderCollector();
$attributeCollection = $attributeCollector->collectFromFinder($finder);
foreach ($attributeCollection->toArray() as $attribute) {
$instance = $attribute->instance();
// inspect or process concrete attribute instance here
}
declare(strict_types=1);
use Ergebnis\AttributeCollector;
$locations = [
AttributeCollector\Location\ClassLocation::create(AttributeCollector\Name\ClassName::fromString(Foo::class)),
AttributeCollector\Location\ClassPropertyLocation::create(
AttributeCollector\Name\ClassName::fromString(Foo::class),
AttributeCollector\Name\PropertyName::fromString('bar')
),
AttributeCollector\Location\ClassMethodLocation::create(
AttributeCollector\Name\ClassName::fromString(Foo::class),
AttributeCollector\Name\MethodName::fromString('baz')
),
AttributeCollector\Location\ClassMethodParameterLocation::create(
AttributeCollector\Name\ClassName::fromString(Foo::class),
AttributeCollector\Name\MethodName::fromString('baz'),
AttributeCollector\Name\ParameterName::fromString('qux')
),
AttributeCollector\Location\FunctionLocation::create(AttributeCollector\Name\FunctionName::fromString('baz')),
AttributeCollector\Location\ConstantLocation::create(AttributeCollector\Name\ConstantName::fromString('BAZ')),
];
$attributeCollector = new AttributeCollector\Collector\TraversingAttributeFromLocationCollector();
$attributeCollection = $attributeCollector->collectFromLocation(...$locations);
foreach ($attributeCollection->toArray() as $attribute) {
$instance = $attribute->instance();
// inspect or process concrete attribute instance here
}