src/Drupal/Core/Template/Attribute.php
protected function createAttributeValue($name, $value) {
    // If the value is already an AttributeValueBase object,
    // return a new instance of the same class, but with the new name.
    if ($value instanceof AttributeValueBase) {
      $class = get_class($value);
      return new $class($name, $value->value());
    }
    // An array value or 'class' attribute name are forced to always be an
    // AttributeArray value for consistency.
    if ($name == 'class' && !is_array($value)) {
      // Cast the value to string in case it implements MarkupInterface.
      $value = [(string) $value];
    }
    if (is_array($value)) {
      // Cast the value to an array if the value was passed in as a string.
      // @todo Decide to fix all the broken instances of class as a string
      // in core or cast them.
      $value = new AttributeArray($name, $value);
    }
    elseif (is_bool($value)) {
      $value = new AttributeBoolean($name, $value);
    }
    // As a development aid, we allow the value to be a safe string object.
    elseif (SafeMarkup::isSafe($value)) {
      // Attributes are not supposed to display HTML markup, so we just convert
      // the value to plain text.
      $value = PlainTextOutput::renderFromHtml($value);
      $value = new AttributeString($name, $value);
    }
    elseif (!is_object($value)) {
      $value = new AttributeString($name, $value);
    }
    return $value;
  }
protected function createAttributeValue($name, $value) {
    // If the value is already an AttributeValueBase object,
    // return a new instance of the same class, but with the new name.
    if ($value instanceof AttributeValueBase) {
      $class = get_class($value);
      return new $class($name, $value->value());
    }
    // An array value or 'class' attribute name are forced to always be an
    // AttributeArray value for consistency.
    if ($name == 'class' && !is_array($value)) {
      // Cast the value to string in case it implements MarkupInterface.
      $value = [(string) $value];
    }
    if (is_array($value)) {
      // Cast the value to an array if the value was passed in as a string.
      // @todo Decide to fix all the broken instances of class as a string
      // in core or cast them.
      $value = new AttributeArray($name, $value);
    }
    elseif (is_bool($value)) {
      $value = new AttributeBoolean($name, $value);
    }
    // As a development aid, we allow the value to be a safe string object.
    elseif (SafeMarkup::isSafe($value)) {
      // Attributes are not supposed to display HTML markup, so we just convert
      // the value to plain text.
      $value = PlainTextOutput::renderFromHtml($value);
      $value = new AttributeString($name, $value);
    }
    elseif (!is_object($value)) {
      $value = new AttributeString($name, $value);
    }
    return $value;
  }
protected function createAttributeValue ( $ name , $ value ) { // If the value is already an AttributeValueBase object, // return a new instance of the same class, but with the new name. if ( $ value instanceof AttributeValueBase ) { $ class = get_class ( $ value ) ; return new $ class ( $ name , $ value -> value ( ) ) ; } // An array value or 'class' attribute name are forced to always be an // AttributeArray value for consistency. if ( $ name == 'class' && ! is_array ( $ value ) ) { // Cast the value to string in case it implements MarkupInterface. $ value = [ ( string ) $ value ] ; } if ( is_array ( $ value ) ) { // Cast the value to an array if the value was passed in as a string. // @todo Decide to fix all the broken instances of class as a string // in core or cast them. $ value = new AttributeArray ( $ name , $ value ) ; } elseif ( is_bool ( $ value ) ) { $ value = new AttributeBoolean ( $ name , $ value ) ; } // As a development aid, we allow the value to be a safe string object. elseif ( SafeMarkup :: isSafe ( $ value ) ) { // Attributes are not supposed to display HTML markup, so we just convert // the value to plain text. $ value = PlainTextOutput :: renderFromHtml ( $ value ) ; $ value = new AttributeString ( $ name , $ value ) ; } elseif ( ! is_object ( $ value ) ) { $ value = new AttributeString ( $ name , $ value ) ; } return $ value ; }
Creates the different types of attribute values.

@param string $name
The attribute name.
@param mixed $value
The attribute value.

@return \Drupal\Core\Template\AttributeValueBase
An AttributeValueBase representation of the attribute's value.
Creates the different types of attribute values .