* @package Mammut\Template */ class CTemplateCallback extends \Mammut\StrictObject { private $target; private $method = false; private $arguments; public function __construct($target,array $arguments = array()) { if (is_array($target)) { if (!method_exists($target[0],$target[1])) throw new \Exception('method missing'); $this->target = $target[0]; $this->method = $target[1]; } else $this->target = $target; $this->arguments = &$arguments; } public function getValue(&$context) { if ($this->method) return call_user_func_array(array($this->target,$this->method),array(&$context,$this->arguments)); elseif ($this->target instanceof \Closure) return $this->target($this->arguments); else return call_user_func_array($this->target,$this->arguments); } }