public function assignZvalValue(array $parameter, CompilationContext $compilationContext)
{
if (isset($parameter['data-type'])) {
$dataType = $parameter['data-type'];
} else {
$dataType = 'variable';
}
if (in_array($dataType, array('variable', 'callable', 'object', 'resource'))) {
return;
}
$compilationContext->headersManager->add('kernel/operators');
$parameterVariable = $compilationContext->symbolTable->getVariableForWrite($parameter['name'] . '_param', $compilationContext);
$parameterCode = $compilationContext->backend->getVariableCode($parameterVariable);
$inputParamVar = $compilationContext->symbolTable->getVariableForWrite($parameter['name'], $compilationContext);
$inputParamCode = $compilationContext->backend->getVariableCode($inputParamVar);
switch ($dataType) {
case 'int':
case 'uint':
case 'long':
case 'ulong':
return "\t" . $parameter['name'] . ' = zephir_get_intval(' . $parameterCode . ');' . PHP_EOL;
case 'char':
return "\t" . $parameter['name'] . ' = zephir_get_charval(' . $parameterCode . ');' . PHP_EOL;
case 'bool':
return "\t" . $parameter['name'] . ' = zephir_get_boolval(' . $parameterCode . ');' . PHP_EOL;
case 'double':
return "\t" . $parameter['name'] . ' = zephir_get_doubleval(' . $parameterCode . ');' . PHP_EOL;
case 'string':
$compilationContext->symbolTable->mustGrownStack(true);
return "\t" . 'zephir_get_strval(' . $inputParamCode . ', ' . $parameterCode . ');' . PHP_EOL;
case 'array':
$compilationContext->symbolTable->mustGrownStack(true);
return "\t" . 'zephir_get_arrval(' . $inputParamCode . ', ' . $parameterCode . ');' . PHP_EOL;
default:
throw new CompilerException("Parameter type: " . $dataType, $parameter);
}
}