handler = $handler; // Note: prone to circular references // Note: these may be ->config_compiler_class etc in the future //$this->config_compiler_class = $handler->config_compiler_class; //$this->config_lexer_class = $handler->config_lexer_class; //$this->config_parser_class = $handler->config_parser_class; $this->smarty = $smarty; $this->resource = $resource; $this->type = $type; $this->name = $name; $this->unique_resource = $unique_resource; } /** * <> Generic setter. * * @param string $property_name valid: content, timestamp, exists * @param mixed $value newly assigned value (not check for correct type) * * @throws SmartyException when the given property name is not valid */ public function __set($property_name, $value) { switch ($property_name) { case 'content': case 'timestamp': case 'exists': $this->$property_name = $value; break; default: throw new SmartyException("invalid config property '$property_name'."); } } /** * <> Generic getter. * * @param string $property_name valid: content, timestamp, exists * * @return mixed|void * @throws SmartyException when the given property name is not valid */ public function __get($property_name) { switch ($property_name) { case 'timestamp': case 'exists': $this->handler->populateTimestamp($this); return $this->$property_name; case 'content': return $this->content = $this->handler->getContent($this); default: throw new SmartyException("config property '$property_name' does not exist."); } } }