123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- /**
- * Phrase (for replacing Data Value with Object)
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework;
- use Magento\Framework\Phrase\Renderer\Placeholder as RendererPlaceholder;
- use Magento\Framework\Phrase\RendererInterface;
- /**
- * @api
- * @since 100.0.2
- */
- class Phrase implements \JsonSerializable
- {
- /**
- * Default phrase renderer. Allows stacking renderers that "don't know about each other"
- *
- * @var RendererInterface
- */
- private static $renderer;
- /**
- * String for rendering
- *
- * @var string
- */
- private $text;
- /**
- * Arguments for placeholder values
- *
- * @var array
- */
- private $arguments;
- /**
- * Set default Phrase renderer
- *
- * @param RendererInterface $renderer
- * @return void
- */
- public static function setRenderer(RendererInterface $renderer)
- {
- self::$renderer = $renderer;
- }
- /**
- * Get default Phrase renderer
- *
- * @return RendererInterface
- */
- public static function getRenderer()
- {
- if (!self::$renderer) {
- self::$renderer = new RendererPlaceholder();
- }
- return self::$renderer;
- }
- /**
- * Phrase construct
- *
- * @param string $text
- * @param array $arguments
- */
- public function __construct($text, array $arguments = [])
- {
- $this->text = (string)$text;
- $this->arguments = $arguments;
- }
- /**
- * Get phrase base text
- *
- * @return string
- */
- public function getText()
- {
- return $this->text;
- }
- /**
- * Get phrase message arguments
- *
- * @return array
- */
- public function getArguments()
- {
- return $this->arguments;
- }
- /**
- * Render phrase
- *
- * @return string
- */
- public function render()
- {
- try {
- return self::getRenderer()->render([$this->text], $this->getArguments());
- } catch (\Exception $e) {
- return $this->getText();
- }
- }
- /**
- * Defers rendering to the last possible moment (when converted to string)
- *
- * @return string
- */
- public function __toString()
- {
- return $this->render();
- }
- /**
- * Specify data which should be serialized to JSON
- *
- * @return string
- */
- public function jsonSerialize()
- {
- return $this->render();
- }
- }
|