shared.literal_compiler_param.php (1010B)
1 <?php 2 /** 3 * Smarty plugin 4 * 5 * @package Smarty 6 * @subpackage PluginsShared 7 */ 8 9 /** 10 * evaluate compiler parameter 11 * 12 * @param array $params parameter array as given to the compiler function 13 * @param integer $index array index of the parameter to convert 14 * @param mixed $default value to be returned if the parameter is not present 15 * 16 * @return mixed evaluated value of parameter or $default 17 * @throws SmartyException if parameter is not a literal (but an expression, variable, …) 18 * @author Rodney Rehm 19 */ 20 function smarty_literal_compiler_param($params, $index, $default = null) 21 { 22 // not set, go default 23 if (!isset($params[$index])) { 24 return $default; 25 } 26 // test if param is a literal 27 if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[$index])) { 28 throw new SmartyException('$param[' . $index . '] is not a literal and is thus not evaluatable at compile time'); 29 } 30 31 $t = null; 32 eval("\$t = " . $params[$index] . ";"); 33 34 return $t; 35 }