plus-8.x-4.x-dev/src/Utility/AttributeBase.php

src/Utility/AttributeBase.php
<?php

namespace Drupal\plus\Utility;

use Drupal\Component\Utility\Html;
use Drupal\Component\Utility\ToStringTrait;

/**
 * Defines the base class for an attribute type.
 *
 * @see \Drupal\Core\Template\Attribute
 */
abstract class AttributeBase extends ArrayObject {

  use ToStringTrait;

  /**
   * Renders '$name=""' if $value is an empty string.
   *
   * @see \Drupal\Core\Template\AttributeValueBase::render()
   */
  const RENDER_EMPTY_ATTRIBUTE = TRUE;

  /**
   * The name of the attribute.
   *
   * @var mixed
   */
  protected $name;

  /**
   * AttributeValueBase constructor.
   *
   * @param string $name
   *   The name of the attribute.
   * @param mixed $value
   *   The attribute value, passed by reference.
   */
  public function __construct($name, &$value = NULL) {
    parent::__construct($value);
    $this->name = $name;
  }

  /**
   * {@inheritdoc}
   */
  abstract public function __toString();

  /**
   * Retrieves the name of the attribute.
   *
   * @return string
   *   The attribute name.
   */
  public function name() {
    return $this->name;
  }

  /**
   * Returns a string representation of the attribute.
   *
   * While __toString only returns the value in a string form, render()
   * contains the name of the attribute as well.
   *
   * @return string
   *   The string representation of the attribute.
   */
  public function render() {
    $value = (string) $this;
    if (isset($this->__storage) && static::RENDER_EMPTY_ATTRIBUTE || !empty($value)) {
      return Html::escape($this->name()) . '="' . $value . '"';
    }
    return '';
  }

  /**
   * Sets the name of the attribute.
   *
   * @param string $name
   *   The name of the attribute.
   *
   * @return static
   */
  public function setName($name) {
    $this->name = $name;
    return $this;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc