Skip to content

Latest commit

 

History

History
56 lines (42 loc) · 1.46 KB

how_get_marked_rule_entity.md

File metadata and controls

56 lines (42 loc) · 1.46 KB

How get marked rule entity

General. Get all classes

<?php

use DrinksIt\RuleEngineBundle\Metadata\Resource\Factory\RuleEngineFactoryInterface;
use DrinksIt\RuleEngineBundle\Metadata\Property\PropertyRuleEntity;
use DrinksIt\RuleEngineBundle\Metadata\Resource\ResourceRuleEntity;

class Service {
 
    protected $classes;
 
    public function __construct(
        RuleEngineFactoryInterface $resourceFactory
    )
    {
        /** @var ResourceRuleEntity $iterable */
        foreach ($resourceFactory->create() as $iterable) {
            $this->classes[] = [
                'class' => $iterable->getClassName(),
                'properties' => array_map(function (PropertyRuleEntity $ruleEntity) {
                    return [
                        'conditionType' => $ruleEntity->getClassNameAttributeConditionType(),
                        'actionType' => $ruleEntity->getClassNameActionFieldType()
                    ];
                }, $iterable->getProperties())
            ];
        }
    }

}

By class

<?php

use DrinksIt\RuleEngineBundle\Metadata\Resource\Factory\RuleEntityResourceFactory;use DrinksIt\RuleEngineBundle\Metadata\Resource\ResourceRuleEntity;

class Service {
    
    protected $classInfo;
    
    public function __construct(RuleEntityResourceFactory $factory) {
        $classInfo = $factory->create('ModelClassName');
        if ($classInfo instanceof ResourceRuleEntity) {
            // it's ok
        }
    }
}