vendor/symfony/webpack-encore-bundle/src/Dto/AbstractStimulusDto.php line 35

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of the Symfony WebpackEncoreBundle package.
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  * For the full copyright and license information, please view the LICENSE
  7.  * file that was distributed with this source code.
  8.  */
  9. namespace Symfony\WebpackEncoreBundle\Dto;
  10. use Twig\Environment;
  11. /**
  12.  * @internal
  13.  *
  14.  * @deprecated since 1.17.0 - install symfony/stimulus-bundle instead.
  15.  */
  16. abstract class AbstractStimulusDto implements \Stringable
  17. {
  18.     /**
  19.      * @var Environment
  20.      */
  21.     private $env;
  22.     public function __construct(Environment $env)
  23.     {
  24.         $this->env $env;
  25.     }
  26.     abstract public function toArray(): array;
  27.     protected function getFormattedControllerName(string $controllerName): string
  28.     {
  29.         return $this->escapeAsHtmlAttr($this->normalizeControllerName($controllerName));
  30.     }
  31.     protected function getFormattedValue($value)
  32.     {
  33.         if ($value instanceof \Stringable || (\is_object($value) && \is_callable([$value'__toString']))) {
  34.             $value = (string) $value;
  35.         } elseif (!\is_scalar($value)) {
  36.             $value json_encode($value);
  37.         } elseif (\is_bool($value)) {
  38.             $value $value 'true' 'false';
  39.         }
  40.         return (string) $value;
  41.     }
  42.     protected function escapeAsHtmlAttr($value): string
  43.     {
  44.         return (string) twig_escape_filter($this->env$value'html_attr');
  45.     }
  46.     /**
  47.      * Normalize a Stimulus controller name into its HTML equivalent (no special character and / becomes --).
  48.      *
  49.      * @see https://stimulus.hotwired.dev/reference/controllers
  50.      */
  51.     private function normalizeControllerName(string $controllerName): string
  52.     {
  53.         return preg_replace('/^@/'''str_replace('_''-'str_replace('/''--'$controllerName)));
  54.     }
  55. }