Mercurial > hg > isophonics-drupal-site
view core/lib/Drupal/Core/Template/AttributeArray.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line source
<?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; } }