![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/laminas/laminas-view/src/Strategy/ |
<?php declare(strict_types=1); namespace Laminas\View\Strategy; use Laminas\EventManager\AbstractListenerAggregate; use Laminas\EventManager\EventManagerInterface; use Laminas\View\Renderer\PhpRenderer; use Laminas\View\ViewEvent; class PhpRendererStrategy extends AbstractListenerAggregate { /** * Placeholders that may hold content * * @var array<array-key, string> */ protected $contentPlaceholders = ['article', 'content']; /** @var PhpRenderer */ protected $renderer; public function __construct(PhpRenderer $renderer) { $this->renderer = $renderer; } /** * Retrieve the composed renderer * * @return PhpRenderer */ public function getRenderer() { return $this->renderer; } /** * Set list of possible content placeholders * * @param array $contentPlaceholders * @return PhpRendererStrategy */ public function setContentPlaceholders(array $contentPlaceholders) { $this->contentPlaceholders = $contentPlaceholders; return $this; } /** * Get list of possible content placeholders * * @return array */ public function getContentPlaceholders() { return $this->contentPlaceholders; } /** * {@inheritDoc} */ public function attach(EventManagerInterface $events, $priority = 1) { $this->listeners[] = $events->attach(ViewEvent::EVENT_RENDERER, [$this, 'selectRenderer'], $priority); $this->listeners[] = $events->attach(ViewEvent::EVENT_RESPONSE, [$this, 'injectResponse'], $priority); } /** * Select the PhpRenderer; typically, this will be registered last or at * low priority. * * @return PhpRenderer */ public function selectRenderer(ViewEvent $e) { return $this->renderer; } /** * Populate the response object from the View * * Populates the content of the response object from the view rendering * results. * * @return void */ public function injectResponse(ViewEvent $e) { $renderer = $e->getRenderer(); $response = $e->getResponse(); if ($renderer !== $this->renderer || $response === null) { return; } $result = $e->getResult(); // Set content // If content is empty, check common placeholders to determine if they are // populated, and set the content from them. if (empty($result)) { $placeholders = $renderer->plugin('placeholder'); foreach ($this->contentPlaceholders as $placeholder) { if ($placeholders->containerExists($placeholder)) { $result = (string) $placeholders->getContainer($placeholder); break; } } } $response->setContent($result); } }