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

src/Utility/AttributeData.php
<?php

namespace Drupal\plus\Utility;

use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;

/**
 * A class that defines a class based Attribute.
 */
class AttributeData extends AttributeArray {

  /**
   * {@inheritdoc}
   */
  public function __construct(array &$value = []) {
    parent::__construct('data', $value);
  }

  /**
   * {@inheritdoc}
   */
  public function __toString() {
    $output = '';
    /* @var \Drupal\plus\Utility\AttributeDataValue $attribute */
    foreach ($this->value() as $name => $attribute) {
      $output .= $attribute->render();
    }
    return $output;
  }

  /**
   * {@inheritdoc}
   */
  protected function sanitize(...$values) {
    $converter = new CamelCaseToSnakeCaseNameConverter();
    return ArrayObject::create()->merge(...$values)->flatten()
      // Convert each data attribute into a AttributeDataValue object.
      ->map(function ($value, $key) use ($converter) {
        $key = 'data-' . str_replace('_', '-', $converter->normalize($key));
        return new AttributeDataValue($key, $value);
      });
  }

  /**
   * {@inheritdoc}
   */
  public function render() {
    return $this->__toString();
  }

}

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

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