Security update for Core, with self-updated composer
[yaffs-website] / web / core / lib / Drupal / Core / Template / AttributeValueBase.php
1 <?php
2
3 namespace Drupal\Core\Template;
4
5 use Drupal\Component\Utility\Html;
6
7 /**
8  * Defines the base class for an attribute type.
9  *
10  * @see \Drupal\Core\Template\Attribute
11  */
12 abstract class AttributeValueBase {
13
14   /**
15    * Renders '$name=""' if $value is an empty string.
16    *
17    * @see \Drupal\Core\Template\AttributeValueBase::render()
18    */
19   const RENDER_EMPTY_ATTRIBUTE = TRUE;
20
21   /**
22    * The value itself.
23    *
24    * @var mixed
25    */
26   protected $value;
27
28   /**
29    * The name of the value.
30    *
31    * @var mixed
32    */
33   protected $name;
34
35   /**
36    * Constructs a \Drupal\Core\Template\AttributeValueBase object.
37    */
38   public function __construct($name, $value) {
39     $this->name = $name;
40     $this->value = $value;
41   }
42
43   /**
44    * Returns a string representation of the attribute.
45    *
46    * While __toString only returns the value in a string form, render()
47    * contains the name of the attribute as well.
48    *
49    * @return string
50    *   The string representation of the attribute.
51    */
52   public function render() {
53     $value = (string) $this;
54     if (isset($this->value) && static::RENDER_EMPTY_ATTRIBUTE || !empty($value)) {
55       return Html::escape($this->name) . '="' . $value . '"';
56     }
57   }
58
59   /**
60    * Returns the raw value.
61    */
62   public function value() {
63     return $this->value;
64   }
65
66   /**
67    * Implements the magic __toString() method.
68    */
69   abstract public function __toString();
70
71 }