protected function ensureMethodExists($class, $name, $stmt)
    {
        $this->ensureClassOrTraitExists($class, $stmt);

        // let's pretend all calls to self, parent and static are valid
        if (\in_array(\strtolower($class), ['self', 'parent', 'static'])) {
            return;
        }

        // ... and all calls to classes defined right now
        if ($this->findInScope($class) === self::CLASS_TYPE) {
            return;
        }

        // if method name is an expression, give it a pass for now
        if ($name instanceof Expr) {
            return;
        }

        if (!\method_exists($class, $name) && !\method_exists($class, '__callStatic')) {
            throw $this->createError(\sprintf('Call to undefined method %s::%s()', $class, $name), $stmt);
        }
    }
protected function ensureMethodExists($class, $name, $stmt)
    {
        $this->ensureClassOrTraitExists($class, $stmt);

        // let's pretend all calls to self, parent and static are valid
        if (\in_array(\strtolower($class), ['self', 'parent', 'static'])) {
            return;
        }

        // ... and all calls to classes defined right now
        if ($this->findInScope($class) === self::CLASS_TYPE) {
            return;
        }

        // if method name is an expression, give it a pass for now
        if ($name instanceof Expr) {
            return;
        }

        if (!\method_exists($class, $name) && !\method_exists($class, '__callStatic')) {
            throw $this->createError(\sprintf('Call to undefined method %s::%s()', $class, $name), $stmt);
        }
    }
protected function ensureMethodExists ( $ class , $ name , $ stmt ) { $ this -> ensureClassOrTraitExists ( $ class , $ stmt ) ; // let's pretend all calls to self, parent and static are valid if ( \ in_array ( \ strtolower ( $ class ) , [ 'self' , 'parent' , 'static' ] ) ) { return ; } // ... and all calls to classes defined right now if ( $ this -> findInScope ( $ class ) === self :: CLASS_TYPE ) { return ; } // if method name is an expression, give it a pass for now if ( $ name instanceof Expr ) { return ; } if ( ! \ method_exists ( $ class , $ name ) && ! \ method_exists ( $ class , '__callStatic' ) ) { throw $ this -> createError ( \ sprintf ( 'Call to undefined method %s::%s()' , $ class , $ name ) , $ stmt ) ; } }
Ensure that a statically called method exists.

@throws FatalErrorException

@param string $class
@param string $name
@param Stmt   $stmt
Ensure that a statically called method exists .