Exakat\Analyzer\Structures\IdenticalConditions::analyze PHP Метод

analyze() публичный Метод

public analyze ( )
    public function analyze()
    {
        // $a || $a
        // ($a) && ($a)
        $this->atomIs('Logical')->hasNoIn(array('LEFT', 'RIGHT'))->outIs('RIGHT')->outIsIE('CODE')->atomIsNot('Logical')->savePropertyAs('fullcode', 'left')->inIsIE('CODE')->inIs('RIGHT')->outIs('LEFT')->outIsIE('CODE')->atomIsNot('Logical')->samePropertyAs('fullcode', 'left', true)->back('first');
        $this->prepareQuery();
        // $a || $a || $a
        // ($a) && ($a)
        // two levels
        $this->atomIs('Logical')->outIs('RIGHT')->outIsIE('CODE')->savePropertyAs('fullcode', 'right')->inIsIE('CODE')->inIs('RIGHT')->outIs('LEFT')->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->outIsIE('CODE')->samePropertyAs('fullcode', 'right', true)->back('first');
        $this->prepareQuery();
        $this->atomIs('Logical')->outIs('LEFT')->outIsIE('CODE')->savePropertyAs('fullcode', 'left')->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->outIsIE('CODE')->samePropertyAs('fullcode', 'left', true)->back('first');
        $this->prepareQuery();
        // case for $a || $b || $b
        $this->atomIs('Logical')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Logical')->outIs('RIGHT')->outIsIE('CODE')->savePropertyAs('fullcode', 'right')->inIsIE('CODE')->inIs('RIGHT')->outIs('LEFT')->outIsIE('CODE')->samePropertyAs('fullcode', 'right', true)->back('first');
        $this->prepareQuery();
        // $a || $a || $a
        // ($a) && ($a)
        // three levels
        // straight structure
        $this->atomIs('Logical')->outIs('RIGHT')->outIsIE('CODE')->savePropertyAs('fullcode', 'left')->inIsIE('CODE')->inIs('RIGHT')->outIs('LEFT')->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->samePropertyAs('fullcode', 'left', true)->back('first');
        $this->prepareQuery();
        // reverse structure
        $this->atomIs('Logical')->outIs('LEFT')->outIsIE('CODE')->savePropertyAs('fullcode', 'left')->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->samePropertyAs('fullcode', 'left', true)->back('first');
        $this->prepareQuery();
        // $a || $a || $a
        // ($a) && ($a)
        // four levels
        $this->atomIs('Logical')->outIs('LEFT')->outIsIE('CODE')->savePropertyAs('fullcode', 'left')->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->samePropertyAs('fullcode', 'left', true)->back('first');
        $this->prepareQuery();
        // $a || $a || $a
        // ($a) && ($a)
        // four levels
        $this->atomIs('Logical')->outIs('LEFT')->outIsIE('CODE')->savePropertyAs('fullcode', 'left')->inIsIE('CODE')->inIs('LEFT')->outIs('RIGHT')->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->outIsIE('CODE')->atomIs('Logical')->outIs(array('RIGHT', 'LEFT'))->samePropertyAs('fullcode', 'left', true)->back('first');
        $this->prepareQuery();
        // TODO : also adding situations like ($a and !$a) ?
    }
IdenticalConditions