/**
  * get Smarty property in template context
  *
  * @param  string $property_name property name
  *
  * @return \Smarty_Config_Source|\Smarty_Template_Compiled
  * @throws SmartyException if $property_name is not valid
  */
 public function __get($property_name)
 {
     switch ($property_name) {
         case 'source':
             if (empty($this->config_resource)) {
                 throw new SmartyException("Unable to parse resource name \"{$this->config_resource}\"");
             }
             $this->source = Smarty_Resource::config($this);
             return $this->source;
         case 'compiled':
             $this->compiled = $this->source->getCompiled($this);
             return $this->compiled;
     }
     throw new SmartyException("config attribute '{$property_name}' does not exist.");
 }