/** * Return the internal array of plates folders. * * @return \League\Plates\Template\Folder[] */ private function getPlatesFolders() { $folders = $this->template->getFolders(); $r = new ReflectionProperty($folders, 'folders'); $r->setAccessible(true); return $r->getValue($folders); }
/** * 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.'); } }
/** * PlatesProvider constructor. * @param Engine $plates * @param string $root_path * @param string $namespace */ public function __construct(Engine $plates, $root_path, $namespace) { $this->plates = $plates; $this->namespace = $namespace; if (!$plates->getFolders()->exists($namespace)) { $plates->addFolder($namespace, $root_path); } }
/** * Render a string * * @param string $template The template content to render * @param array $locals The variable to use in template * @return null|string */ public function render($template, array $locals = array()) { $tmpName = uniqid('plates_tmp_', false); $tmpPath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $tmpName; if (!is_null($this->plates->getFileExtension())) { $tmpPath .= '.' . $this->plates->getFileExtension(); } $isTmpRegister = $this->plates->getFolders()->exists(sys_get_temp_dir()); if (!$isTmpRegister) { $this->plates->addFolder(sys_get_temp_dir(), sys_get_temp_dir()); } file_put_contents($tmpPath, $template); $data = $this->plates->render(sys_get_temp_dir() . '::' . $tmpName, $locals); unlink($tmpPath); if (!$isTmpRegister) { $this->plates->getFolders()->remove(sys_get_temp_dir()); } return $data; }
/** * Set the parsed template folder. * @param string $folder * @return Name */ public function setFolder($folder) { $this->folder = $this->engine->getFolders()->get($folder); return $this; }