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
}