/** * Parse name to determine template folder and filename. */ protected function parse() { $parts = explode('::', $this->name); if (count($parts) === 1) { if (is_null($this->engine->getDirectory())) { $this->throwParseException('The default directory has not been defined.'); } if ($parts[0] === '') { $this->throwParseException('The template name cannot be empty.'); } $this->file = $parts[0]; } elseif (count($parts) === 2) { if ($parts[0] === '') { $this->throwParseException('The folder name cannot be empty.'); } if ($parts[1] === '') { $this->throwParseException('The template name cannot be empty.'); } if (!$this->engine->getFolders()->exists($parts[0])) { $this->throwParseException('The folder "' . $parts[0] . '" does not exist.'); } $this->folder = $this->engine->getFolders()->get($parts[0]); $this->file = $parts[1]; } else { $this->throwParseException('Do not use the folder namespace seperator "::" more than once.'); } }
/** * Get the default templates directory. * @return string */ protected function getDefaultDirectory() { $directory = $this->engine->getDirectory(); if (is_null($directory)) { throw new LogicException('The template name "' . $this->name . '" is not valid. ' . 'The default directory has not been defined.'); } return $directory; }
/** * Create and return a TemplatePath representing the default Plates directory. * * @return TemplatePath */ private function getDefaultPath() { return new TemplatePath($this->template->getDirectory()); }