You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

shared.literal_compiler_param.php 1.0KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. /**
  3. * Smarty plugin
  4. *
  5. * @package Smarty
  6. * @subpackage PluginsShared
  7. */
  8. /**
  9. * evaluate compiler parameter
  10. *
  11. * @param array $params parameter array as given to the compiler function
  12. * @param integer $index array index of the parameter to convert
  13. * @param mixed $default value to be returned if the parameter is not present
  14. *
  15. * @return mixed evaluated value of parameter or $default
  16. * @throws SmartyException if parameter is not a literal (but an expression, variable, …)
  17. * @author Rodney Rehm
  18. */
  19. function smarty_literal_compiler_param($params, $index, $default = null)
  20. {
  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 .
  28. '] is not a literal and is thus not evaluatable at compile time');
  29. }
  30. $t = null;
  31. eval("\$t = " . $params[ $index ] . ";");
  32. return $t;
  33. }