Files
smarty/libs/plugins/shared.literal_compiler_param.php

36 lines
1.0 KiB
PHP
Raw Normal View History

2011-09-16 14:19:56 +00:00
<?php
/**
* Smarty plugin
*
* @package Smarty
2011-09-16 14:19:56 +00:00
* @subpackage PluginsShared
*/
/**
* evaluate compiler parameter
*
2011-11-14 14:53:16 +00:00
* @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
*
2011-11-14 14:53:16 +00:00
* @return mixed evaluated value of parameter or $default
* @throws SmartyException if parameter is not a literal (but an expression, variable, )
2011-09-16 14:19:56 +00:00
* @author Rodney Rehm
*/
function smarty_literal_compiler_param($params, $index, $default = null)
2011-09-16 14:19:56 +00:00
{
// not set, go default
2016-02-09 01:27:15 +01:00
if (!isset($params[ $index ])) {
2011-09-16 14:19:56 +00:00
return $default;
}
// test if param is a literal
2016-02-09 01:27:15 +01:00
if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[ $index ])) {
2018-06-12 09:58:15 +02:00
throw new SmartyException(
'$param[' . $index .
'] is not a literal and is thus not evaluatable at compile time'
);
2011-09-16 14:19:56 +00:00
}
$t = null;
2016-02-09 01:27:15 +01:00
eval("\$t = " . $params[ $index ] . ";");
2011-09-16 14:19:56 +00:00
return $t;
}