AttributeValueBase.php

Same filename in other branches
  1. 9 core/lib/Drupal/Core/Template/AttributeValueBase.php
  2. 8.9.x core/lib/Drupal/Core/Template/AttributeValueBase.php
  3. 11.x core/lib/Drupal/Core/Template/AttributeValueBase.php

Namespace

Drupal\Core\Template

File

core/lib/Drupal/Core/Template/AttributeValueBase.php

View source
<?php

namespace Drupal\Core\Template;

use Drupal\Component\Utility\Html;

/**
 * Defines the base class for an attribute type.
 *
 * @see \Drupal\Core\Template\Attribute
 */
abstract class AttributeValueBase {
    
    /**
     * Renders '$name=""' if $value is an empty string.
     *
     * @see \Drupal\Core\Template\AttributeValueBase::render()
     */
    const RENDER_EMPTY_ATTRIBUTE = TRUE;
    
    /**
     * The value itself.
     *
     * @var mixed
     */
    protected $value;
    
    /**
     * The name of the value.
     *
     * @var mixed
     */
    protected $name;
    
    /**
     * Constructs a \Drupal\Core\Template\AttributeValueBase object.
     */
    public function __construct($name, $value) {
        $this->name = $name;
        $this->value = $value;
    }
    
    /**
     * 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->value) && static::RENDER_EMPTY_ATTRIBUTE || !empty($value)) {
            return Html::escape($this->name) . '="' . $value . '"';
        }
    }
    
    /**
     * Returns the raw value.
     */
    public function value() {
        return $this->value;
    }
    
    /**
     * Implements the magic __toString() method.
     */
    public abstract function __toString();

}

Classes

Title Deprecated Summary
AttributeValueBase Defines the base class for an attribute type.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.