Library/Statements/Let/Variable.php
private function doArrayAssignment(
        CodePrinter $codePrinter,
        CompiledExpression $resolvedExpr,
        ZephirVariable $symbolVariable,
        $variable,
        array $statement,
        CompilationContext $compilationContext
    ) {
        switch ($resolvedExpr->getType()) {
            case 'variable':
            case 'array':
                switch ($statement['operator']) {
                    case 'assign':
                        if ($variable != $resolvedExpr->getCode()) {
                            $symbolVariable->setMustInitNull(true);
                            $compilationContext->symbolTable->mustGrownStack(true);

                            /* Inherit the dynamic type data from the assigned value */
                            $symbolVariable->setDynamicTypes('array');
                            $symbolVariable->increaseVariantIfNull();
                            $symbol = $compilationContext->backend->getVariableCode($symbolVariable);

                            $codePrinter->output('ZEPHIR_CPY_WRT('.$symbol.', '.$compilationContext->backend->resolveValue($resolvedExpr, $compilationContext).');');
                        }
                        break;

                    default:
                        throw new IllegalOperationException($statement, $resolvedExpr, $resolvedExpr->getOriginal());
                }
                break;

            default:
                throw new CompilerException("Cannot '".$statement['operator']."' ".$resolvedExpr->getType().' for array type', $resolvedExpr->getOriginal());
        }
    }
private function doArrayAssignment(
        CodePrinter $codePrinter,
        CompiledExpression $resolvedExpr,
        ZephirVariable $symbolVariable,
        $variable,
        array $statement,
        CompilationContext $compilationContext
    ) {
        switch ($resolvedExpr->getType()) {
            case 'variable':
            case 'array':
                switch ($statement['operator']) {
                    case 'assign':
                        if ($variable != $resolvedExpr->getCode()) {
                            $symbolVariable->setMustInitNull(true);
                            $compilationContext->symbolTable->mustGrownStack(true);

                            /* Inherit the dynamic type data from the assigned value */
                            $symbolVariable->setDynamicTypes('array');
                            $symbolVariable->increaseVariantIfNull();
                            $symbol = $compilationContext->backend->getVariableCode($symbolVariable);

                            $codePrinter->output('ZEPHIR_CPY_WRT('.$symbol.', '.$compilationContext->backend->resolveValue($resolvedExpr, $compilationContext).');');
                        }
                        break;

                    default:
                        throw new IllegalOperationException($statement, $resolvedExpr, $resolvedExpr->getOriginal());
                }
                break;

            default:
                throw new CompilerException("Cannot '".$statement['operator']."' ".$resolvedExpr->getType().' for array type', $resolvedExpr->getOriginal());
        }
    }
private function doArrayAssignment ( CodePrinter $ codePrinter , CompiledExpression $ resolvedExpr , ZephirVariable $ symbolVariable , $ variable , array $ statement , CompilationContext $ compilationContext ) { switch ( $ resolvedExpr -> getType ( ) ) { case 'variable' : case 'array' : switch ( $ statement [ 'operator' ] ) { case 'assign' : if ( $ variable != $ resolvedExpr -> getCode ( ) ) { $ symbolVariable -> setMustInitNull ( true ) ; $ compilationContext -> symbolTable -> mustGrownStack ( true ) ; /* Inherit the dynamic type data from the assigned value */ $ symbolVariable -> setDynamicTypes ( 'array' ) ; $ symbolVariable -> increaseVariantIfNull ( ) ; $ symbol = $ compilationContext -> backend -> getVariableCode ( $ symbolVariable ) ; $ codePrinter -> output ( 'ZEPHIR_CPY_WRT(' . $ symbol . ', ' . $ compilationContext -> backend -> resolveValue ( $ resolvedExpr , $ compilationContext ) . ');' ) ; } break ; default : throw new IllegalOperationException ( $ statement , $ resolvedExpr , $ resolvedExpr -> getOriginal ( ) ) ; } break ; default : throw new CompilerException ( "Cannot '" . $ statement [ 'operator' ] . "' " . $ resolvedExpr -> getType ( ) . ' for array type' , $ resolvedExpr -> getOriginal ( ) ) ; } }
Performs array assignment.

@param CodePrinter        $codePrinter
@param CompiledExpression $resolvedExpr
@param ZephirVariable     $symbolVariable
@param string             $variable
@param array              $statement
@param CompilationContext $compilationContext

@throws CompilerException
@throws IllegalOperationException
Performs array assignment .