Exakat\Analyzer\Classes\UseThis::analyze PHP Method

analyze() public method

public analyze ( )
    public function analyze()
    {
        // Valid for both statics and normal
        // parent::
        $this->atomIs('Function')->hasClassTrait()->outIs('BLOCK')->atomInside(array('Staticmethodcall', 'Staticconstant', 'Staticproperty'))->outIs('CLASS')->codeIs('parent')->back('first');
        $this->prepareQuery();
        // Case for normal methods
        $this->atomIs('Function')->hasClassTrait()->hasNoOut('STATIC')->outIs('BLOCK')->atomInside('Variable')->codeIs('$this', true)->back('first');
        $this->prepareQuery();
        // Case for statics methods
        $this->atomIs('Function')->hasClassTrait()->hasOut('STATIC')->outIs('BLOCK')->atomInside(array('Staticmethodcall', 'Staticproperty', 'Staticconstant'))->outIs('CLASS')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->savePropertyAs('fullnspath', 'classe')->goToClassTrait()->samePropertyAs('fullnspath', 'classe')->back('first');
        $this->prepareQuery();
        $this->atomIs('Function')->hasClassTrait()->hasOut('STATIC')->outIs('BLOCK')->atomInside('Staticproperty')->outIs('CLASS')->tokenIs(array('T_STRING', 'T_NS_SEPARATOR'))->savePropertyAs('fullnspath', 'classe')->goToClassTrait()->samePropertyAs('fullnspath', 'classe')->back('first');
        $this->prepareQuery();
        // static constant are excluded.
    }
UseThis