library/smarty/libs/plugins/shared.literal_compiler_param.php
changeset 46 f11c31f7fa3e
parent 45 a56e7f9a0463
child 47 03388ec805b4
equal deleted inserted replaced
45:a56e7f9a0463 46:f11c31f7fa3e
     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     // not set, go default
       
    22     if (!isset($params[$index])) {
       
    23         return $default;
       
    24     }
       
    25     // test if param is a literal
       
    26     if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[$index])) {
       
    27         throw new SmartyException('$param[' . $index . '] is not a literal and is thus not evaluatable at compile time');
       
    28     }
       
    29 
       
    30     $t = null;
       
    31     eval("\$t = " . $params[$index] . ";");
       
    32 
       
    33     return $t;
       
    34 }