Library/StaticCall.php
protected function callParent($methodName, array $expression, $symbolVariable, $mustInit, $isExpecting, ClassDefinition $classDefinition, CompilationContext $compilationContext, ClassMethod $method)
    {
        $codePrinter = $compilationContext->codePrinter;
        $classCe = $classDefinition->getClassEntry($compilationContext);
        //$className = str_replace('\\', '\\\\', $classDefinition->getCompleteName());

        /*
         * Call static methods must grown the stack
         */
        $compilationContext->symbolTable->mustGrownStack(true);

        if ($mustInit) {
            $symbolVariable->setMustInitNull(true);
            $symbolVariable->trackVariant($compilationContext);
        }

        /**
         * Check if the  method call can have an inline cache.
         */
        $methodCache = $compilationContext->cacheManager->getStaticMethodCache();
        $cachePointer = $methodCache->get($compilationContext, isset($method) ? $method : null);

        if (isset($expression['parameters']) && \count($expression['parameters'])) {
            $params = $this->getResolvedParams($expression['parameters'], $compilationContext, $expression);
        } else {
            $params = [];
        }

        if (!\count($params)) {
            if ($isExpecting) {
                if ('return_value' == $symbolVariable->getName()) {
                    $codePrinter->output('ZEPHIR_RETURN_CALL_PARENT('.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.');');
                } else {
                    $codePrinter->output('ZEPHIR_CALL_PARENT(&'.$symbolVariable->getName().', '.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.');');
                }
            } else {
                $codePrinter->output('ZEPHIR_CALL_PARENT(NULL, '.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.');');
            }
        } else {
            if ($isExpecting) {
                if ('return_value' == $symbolVariable->getName()) {
                    $codePrinter->output('ZEPHIR_RETURN_CALL_PARENT('.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.', '.implode(', ', $params).');');
                } else {
                    $codePrinter->output('ZEPHIR_CALL_PARENT(&'.$symbolVariable->getName().', '.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.', '.implode(', ', $params).');');
                }
            } else {
                $codePrinter->output('ZEPHIR_CALL_PARENT(NULL, '.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.', '.implode(', ', $params).');');
            }
        }

        /*
         * Temporary variables must be copied if they have more than one reference
         */
        foreach ($this->getMustCheckForCopyVariables() as $checkVariable) {
            $codePrinter->output('zephir_check_temp_parameter('.$checkVariable.');');
        }

        $this->addCallStatusOrJump($compilationContext);
    }
protected function callParent($methodName, array $expression, $symbolVariable, $mustInit, $isExpecting, ClassDefinition $classDefinition, CompilationContext $compilationContext, ClassMethod $method)
    {
        $codePrinter = $compilationContext->codePrinter;
        $classCe = $classDefinition->getClassEntry($compilationContext);
        //$className = str_replace('\\', '\\\\', $classDefinition->getCompleteName());

        /*
         * Call static methods must grown the stack
         */
        $compilationContext->symbolTable->mustGrownStack(true);

        if ($mustInit) {
            $symbolVariable->setMustInitNull(true);
            $symbolVariable->trackVariant($compilationContext);
        }

        /**
         * Check if the  method call can have an inline cache.
         */
        $methodCache = $compilationContext->cacheManager->getStaticMethodCache();
        $cachePointer = $methodCache->get($compilationContext, isset($method) ? $method : null);

        if (isset($expression['parameters']) && \count($expression['parameters'])) {
            $params = $this->getResolvedParams($expression['parameters'], $compilationContext, $expression);
        } else {
            $params = [];
        }

        if (!\count($params)) {
            if ($isExpecting) {
                if ('return_value' == $symbolVariable->getName()) {
                    $codePrinter->output('ZEPHIR_RETURN_CALL_PARENT('.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.');');
                } else {
                    $codePrinter->output('ZEPHIR_CALL_PARENT(&'.$symbolVariable->getName().', '.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.');');
                }
            } else {
                $codePrinter->output('ZEPHIR_CALL_PARENT(NULL, '.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.');');
            }
        } else {
            if ($isExpecting) {
                if ('return_value' == $symbolVariable->getName()) {
                    $codePrinter->output('ZEPHIR_RETURN_CALL_PARENT('.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.', '.implode(', ', $params).');');
                } else {
                    $codePrinter->output('ZEPHIR_CALL_PARENT(&'.$symbolVariable->getName().', '.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.', '.implode(', ', $params).');');
                }
            } else {
                $codePrinter->output('ZEPHIR_CALL_PARENT(NULL, '.$classCe.', getThis(), "'.$methodName.'", '.$cachePointer.', '.implode(', ', $params).');');
            }
        }

        /*
         * Temporary variables must be copied if they have more than one reference
         */
        foreach ($this->getMustCheckForCopyVariables() as $checkVariable) {
            $codePrinter->output('zephir_check_temp_parameter('.$checkVariable.');');
        }

        $this->addCallStatusOrJump($compilationContext);
    }
protected function callParent ( $ methodName , array $ expression , $ symbolVariable , $ mustInit , $ isExpecting , ClassDefinition $ classDefinition , CompilationContext $ compilationContext , ClassMethod $ method ) { $ codePrinter = $ compilationContext -> codePrinter ; $ classCe = $ classDefinition -> getClassEntry ( $ compilationContext ) ; //$className = str_replace('\\', '\\\\', $classDefinition->getCompleteName()); /*
         * Call static methods must grown the stack
         */ $ compilationContext -> symbolTable -> mustGrownStack ( true ) ; if ( $ mustInit ) { $ symbolVariable -> setMustInitNull ( true ) ; $ symbolVariable -> trackVariant ( $ compilationContext ) ; } /**
         * Check if the  method call can have an inline cache.
         */ $ methodCache = $ compilationContext -> cacheManager -> getStaticMethodCache ( ) ; $ cachePointer = $ methodCache -> get ( $ compilationContext , isset ( $ method ) ? $ method : null ) ; if ( isset ( $ expression [ 'parameters' ] ) && \ count ( $ expression [ 'parameters' ] ) ) { $ params = $ this -> getResolvedParams ( $ expression [ 'parameters' ] , $ compilationContext , $ expression ) ; } else { $ params = [ ] ; } if ( ! \ count ( $ params ) ) { if ( $ isExpecting ) { if ( 'return_value' == $ symbolVariable -> getName ( ) ) { $ codePrinter -> output ( 'ZEPHIR_RETURN_CALL_PARENT(' . $ classCe . ', getThis(), "' . $ methodName . '", ' . $ cachePointer . ');' ) ; } else { $ codePrinter -> output ( 'ZEPHIR_CALL_PARENT(&' . $ symbolVariable -> getName ( ) . ', ' . $ classCe . ', getThis(), "' . $ methodName . '", ' . $ cachePointer . ');' ) ; } } else { $ codePrinter -> output ( 'ZEPHIR_CALL_PARENT(NULL, ' . $ classCe . ', getThis(), "' . $ methodName . '", ' . $ cachePointer . ');' ) ; } } else { if ( $ isExpecting ) { if ( 'return_value' == $ symbolVariable -> getName ( ) ) { $ codePrinter -> output ( 'ZEPHIR_RETURN_CALL_PARENT(' . $ classCe . ', getThis(), "' . $ methodName . '", ' . $ cachePointer . ', ' . implode ( ', ' , $ params ) . ');' ) ; } else { $ codePrinter -> output ( 'ZEPHIR_CALL_PARENT(&' . $ symbolVariable -> getName ( ) . ', ' . $ classCe . ', getThis(), "' . $ methodName . '", ' . $ cachePointer . ', ' . implode ( ', ' , $ params ) . ');' ) ; } } else { $ codePrinter -> output ( 'ZEPHIR_CALL_PARENT(NULL, ' . $ classCe . ', getThis(), "' . $ methodName . '", ' . $ cachePointer . ', ' . implode ( ', ' , $ params ) . ');' ) ; } } /*
         * Temporary variables must be copied if they have more than one reference
         */ foreach ( $ this -> getMustCheckForCopyVariables ( ) as $ checkVariable ) { $ codePrinter -> output ( 'zephir_check_temp_parameter(' . $ checkVariable . ');' ) ; } $ this -> addCallStatusOrJump ( $ compilationContext ) ; }
Calls static methods on the 'parent' context.

@param string             $methodName
@param array              $expression
@param Variable           $symbolVariable
@param bool               $mustInit
@param bool               $isExpecting
@param ClassDefinition    $classDefinition
@param CompilationContext $compilationContext
@param ClassMethod        $method
Calls static methods on the parent context .