| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | <?phpnamespace Aws\EndpointV2\Rule;use Aws\EndpointV2\Ruleset\RulesetStandardLibrary;class TreeRule extends AbstractRule{    /** @var array */    private $rules;    public function __construct(array $definition)    {        parent::__construct($definition);        $this->rules = $this->createRules($definition['rules']);    }    /**     * @return array     */    public function getRules()    {        return $this->rules;    }    /**     * If a tree rule's conditions evaluate successfully, iterate over its     * subordinate rules and return a result if there is one. If any of the     * subsequent rules are trees, the function will recurse until it reaches     * an error or an endpoint rule     *     * @return mixed     */    public function evaluate(        array $inputParameters,        RulesetStandardLibrary $standardLibrary    )    {        if ($this->evaluateConditions($inputParameters, $standardLibrary)) {            foreach($this->rules as $rule) {                $inputParametersCopy = $inputParameters;                $evaluation = $rule->evaluate($inputParametersCopy, $standardLibrary);                if ($evaluation !== false) {                    return $evaluation;                }            }        }        return false;    }    private function createRules(array $rules)    {        $rulesList = [];        forEach($rules as $rule) {            $ruleType = RuleCreator::create($rule['type'], $rule);            $rulesList[] = $ruleType;        }        return $rulesList;    }}
 |