1: | <?php |
2: | |
3: | /** |
4: | * Smarty Internal Undefined |
5: | * |
6: | * Class to handle undefined method calls or calls to obsolete runtime extensions |
7: | * |
8: | * @package Smarty |
9: | * @subpackage PluginsInternal |
10: | * @author Uwe Tews |
11: | */ |
12: | class Smarty_Internal_Undefined |
13: | { |
14: | /** |
15: | * Name of undefined extension class |
16: | * |
17: | * @var string|null |
18: | */ |
19: | public $class = null; |
20: | |
21: | /** |
22: | * Smarty_Internal_Undefined constructor. |
23: | * |
24: | * @param null|string $class name of undefined extension class |
25: | */ |
26: | public function __construct($class = null) |
27: | { |
28: | $this->class = $class; |
29: | } |
30: | |
31: | /** |
32: | * Wrapper for obsolete class Smarty_Internal_Runtime_ValidateCompiled |
33: | * |
34: | * @param \Smarty_Internal_Template $tpl |
35: | * @param array $properties special template properties |
36: | * @param bool $cache flag if called from cache file |
37: | * |
38: | * @return bool false |
39: | */ |
40: | public function decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false) |
41: | { |
42: | if ($cache) { |
43: | $tpl->cached->valid = false; |
44: | } else { |
45: | $tpl->mustCompile = true; |
46: | } |
47: | return false; |
48: | } |
49: | |
50: | /** |
51: | * Call error handler for undefined method |
52: | * |
53: | * @param string $name unknown method-name |
54: | * @param array $args argument array |
55: | * |
56: | * @return mixed |
57: | * @throws SmartyException |
58: | */ |
59: | public function __call($name, $args) |
60: | { |
61: | if (isset($this->class)) { |
62: | throw new SmartyException("undefined extension class '{$this->class}'"); |
63: | } else { |
64: | throw new SmartyException(get_class($args[ 0 ]) . "->{$name}() undefined method"); |
65: | } |
66: | } |
67: | } |
68: |