Submit
Path:
~
/
/
proc
/
self
/
root
/
opt
/
psa
/
admin
/
plib
/
modules
/
rest-api
/
vendor
/
slim
/
php-view
/
src
/
File Content:
PhpRenderer.php
<?php /** * Slim Framework (http://slimframework.com) * * @link https://github.com/slimphp/PHP-View * @copyright Copyright (c) 2011-2015 Josh Lockhart * @license https://github.com/slimphp/PHP-View/blob/master/LICENSE.md (MIT License) */ namespace PleskRestApi\Slim\Views; use InvalidArgumentException; use Psr\Http\Message\ResponseInterface; /** * Class PhpRenderer * @package Slim\Views * * Render PHP view scripts into a PSR-7 Response object */ class PhpRenderer { /** * @var string */ protected $templatePath; /** * @var array */ protected $attributes; /** * @var string */ protected $layout; /** * SlimRenderer constructor. * * @param string $templatePath * @param array $attributes * @param string $layout */ public function __construct($templatePath = "", $attributes = [], $layout = "") { $this->templatePath = \rtrim($templatePath, '/\\') . '/'; $this->attributes = $attributes; $this->setLayout($layout); } /** * Render a template * * $data cannot contain template as a key * * throws RuntimeException if $templatePath . $template does not exist * * @param ResponseInterface $response * @param string $template * @param array $data * * @return ResponseInterface * * @throws \InvalidArgumentException * @throws \RuntimeException */ public function render(ResponseInterface $response, $template, array $data = []) { $output = $this->fetch($template, $data); $response->getBody()->write($output); return $response; } /** * Get layout template * * @return string */ public function getLayout() { return $this->layout; } /** * Set layout template * * @param string $layout */ public function setLayout($layout) { if ($layout === "" || $layout === null) { $this->layout = null; } else { $layoutPath = $this->templatePath . $layout; if (!\is_file($layoutPath)) { throw new \RuntimeException("Layout template `{$layout}` does not exist"); } $this->layout = $layoutPath; } } /** * Get the attributes for the renderer * * @return array */ public function getAttributes() { return $this->attributes; } /** * Set the attributes for the renderer * * @param array $attributes */ public function setAttributes(array $attributes) { $this->attributes = $attributes; } /** * Add an attribute * * @param $key * @param $value */ public function addAttribute($key, $value) { $this->attributes[$key] = $value; } /** * Retrieve an attribute * * @param $key * @return mixed */ public function getAttribute($key) { if (!isset($this->attributes[$key])) { return \false; } return $this->attributes[$key]; } /** * Get the template path * * @return string */ public function getTemplatePath() { return $this->templatePath; } /** * Set the template path * * @param string $templatePath */ public function setTemplatePath($templatePath) { $this->templatePath = \rtrim($templatePath, '/\\') . '/'; } /** * Renders a template and returns the result as a string * * cannot contain template as a key * * throws RuntimeException if $templatePath . $template does not exist * * @param $template * @param array $data * * @return mixed * * @throws \InvalidArgumentException * @throws \RuntimeException */ public function fetch($template, array $data = []) { if (isset($data['template'])) { throw new \InvalidArgumentException("Duplicate template key found"); } if (!\is_file($this->templatePath . $template)) { throw new \RuntimeException("View cannot render `{$template}` because the template does not exist"); } /* foreach ($data as $k=>$val) { if (in_array($k, array_keys($this->attributes))) { throw new \InvalidArgumentException("Duplicate key found in data and renderer attributes. " . $k); } } */ $data = \array_merge($this->attributes, $data); try { \ob_start(); $this->protectedIncludeScope($this->templatePath . $template, $data); $output = \ob_get_clean(); if ($this->layout !== null) { \ob_start(); $data['content'] = $output; $this->protectedIncludeScope($this->layout, $data); $output = \ob_get_clean(); } } catch (\Throwable $e) { // PHP 7+ \ob_end_clean(); throw $e; } catch (\Exception $e) { // PHP < 7 \ob_end_clean(); throw $e; } return $output; } /** * @param string $template * @param array $data */ protected function protectedIncludeScope($template, array $data) { \extract($data); include \func_get_arg(0); } }
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
PhpRenderer.php
5478 bytes
0644
N4ST4R_ID | Naxtarrr