Phan\Analysis\Analyzable::analyze PHP Method

analyze() public method

public analyze ( Context $context, CodeBase $code_base ) : Context
$context Phan\Language\Context
$code_base Phan\CodeBase
return Phan\Language\Context Analyze the node associated with this object in the given context
    public function analyze(Context $context, CodeBase $code_base) : Context
    {
        // Don't do anything if we care about being
        // fast
        if (Config::get()->quick_mode) {
            return $context;
        }
        if (!$this->hasNode()) {
            return $context;
        }
        // Closures depend on the context surrounding them such
        // as for getting `use(...)` variables. Since we don't
        // have them, we can't re-analyze them until we change
        // that.
        //
        // TODO: Store the parent context on Analyzable objects
        if ($this->getNode()->kind === \ast\AST_CLOSURE) {
            return $context;
        }
        // Don't go deeper than one level in
        if ($this->recursion_depth++ > 2) {
            return $context;
        }
        // Analyze the node in a cloned context so that we
        // don't overwrite anything
        return (new BlockAnalysisVisitor($code_base, clone $context))($this->getNode());
    }