0,0 → 1,35 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsShared |
*/ |
/** |
* evaluate compiler parameter |
* |
* @param array $params parameter array as given to the compiler function |
* @param integer $index array index of the parameter to convert |
* @param mixed $default value to be returned if the parameter is not present |
* |
* @return mixed evaluated value of parameter or $default |
* @throws SmartyException if parameter is not a literal (but an expression, variable, …) |
* @author Rodney Rehm |
*/ |
function smarty_literal_compiler_param($params, $index, $default = null) |
{ |
// not set, go default |
if (!isset($params[ $index ])) { |
return $default; |
} |
// test if param is a literal |
if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[ $index ])) { |
throw new SmartyException( |
'$param[' . $index . |
'] is not a literal and is thus not evaluatable at compile time' |
); |
} |
$t = null; |
eval("\$t = " . $params[ $index ] . ";"); |
return $t; |
} |