123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- namespace Drupal\Core\Template;
- use Drupal\Component\Utility\Html;
- /**
- * A class that defines a type of Attribute that can be added to as an array.
- *
- * To use with Attribute, the array must be specified.
- * Correct:
- * @code
- * $attributes = new Attribute();
- * $attributes['class'] = array();
- * $attributes['class'][] = 'cat';
- * @endcode
- * Incorrect:
- * @code
- * $attributes = new Attribute();
- * $attributes['class'][] = 'cat';
- * @endcode
- *
- * @see \Drupal\Core\Template\Attribute
- */
- class AttributeArray extends AttributeValueBase implements \ArrayAccess, \IteratorAggregate {
- /**
- * Ensures empty array as a result of array_filter will not print '$name=""'.
- *
- * @see \Drupal\Core\Template\AttributeArray::__toString()
- * @see \Drupal\Core\Template\AttributeValueBase::render()
- */
- const RENDER_EMPTY_ATTRIBUTE = FALSE;
- /**
- * {@inheritdoc}
- */
- public function offsetGet($offset) {
- return $this->value[$offset];
- }
- /**
- * {@inheritdoc}
- */
- public function offsetSet($offset, $value) {
- if (isset($offset)) {
- $this->value[$offset] = $value;
- }
- else {
- $this->value[] = $value;
- }
- }
- /**
- * {@inheritdoc}
- */
- public function offsetUnset($offset) {
- unset($this->value[$offset]);
- }
- /**
- * {@inheritdoc}
- */
- public function offsetExists($offset) {
- return isset($this->value[$offset]);
- }
- /**
- * Implements the magic __toString() method.
- */
- public function __toString() {
- // Filter out any empty values before printing.
- $this->value = array_unique(array_filter($this->value));
- return Html::escape(implode(' ', $this->value));
- }
- /**
- * {@inheritdoc}
- */
- public function getIterator() {
- return new \ArrayIterator($this->value);
- }
- /**
- * Exchange the array for another one.
- *
- * @see ArrayObject::exchangeArray
- *
- * @param array $input
- * The array input to replace the internal value.
- *
- * @return array
- * The old array value.
- */
- public function exchangeArray($input) {
- $old = $this->value;
- $this->value = $input;
- return $old;
- }
- }
|