Overview

Namespaces

  • Scene7
    • Commands
      • Layer
    • Definitions
    • Helpers
      • Html
        • Attributes
    • Requests

Classes

  • AbstractTag
  • Image
  • Picture
  • Source
  • Overview
  • Namespace
  • Class
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 
<?php

namespace Scene7\Helpers\Html;

use Scene7\RenderInterface;

abstract class AbstractTag implements RenderInterface
{
    /** @var string[] */
    protected $attributes = [];

    /**
     * @return string
     */
    abstract public function render();

    /**
     * @param string $id
     * @return AbstractTag
     */
    public function setId($id)
    {
        return $this->setAttribute('id', $id);
    }

    /**
     * @param string|array $class
     * @return AbstractTag
     */
    public function setClass($class)
    {
        return $this->setAttribute('class', is_array($class) ? implode(' ', $class) : $class);
    }

    /**
     * @param string|array $style
     * @return AbstractTag
     */
    public function setStyle($style)
    {
        return $this->setAttribute('style', is_array($style) ? implode('; ', $style) : $style);
    }

    /**
     * @param string $title
     * @return AbstractTag
     */
    public function setTitle($title)
    {
        return $this->setAttribute('title', $title);
    }

    /**
     * @param array $attributes
     * @return $this
     */
    public function setAttributes(array $attributes)
    {
        foreach ($attributes as $attribute => $value) {
            $this->setAttribute($attribute, $value);
        }

        return $this;
    }

    /**
     * @param string $attribute
     * @param string $value
     * @return $this
     */
    public function setAttribute($attribute, $value)
    {
        $this->attributes[$attribute] = $value;
        return $this;
    }

    /**
     * @return string[]
     */
    public function getAttributes()
    {
        return $this->attributes;
    }

    /**
     * @param string $attribute
     * @return bool
     */
    public function hasAttribute($attribute)
    {
        return isset($this->attributes[$attribute]) && $this->attributes[$attribute] !== '';
    }

    /**
     * @return string
     */
    protected function renderAttributes()
    {
        $rendered = '';
        foreach ($this->getAttributes() as $attributeKey => $attribute) {
            if ($attribute instanceof RenderInterface) {
                $attribute = $attribute->render();
            }

            if (!is_string($attribute)) {
                throw new \RuntimeException('Cannot render attribute: ' . $attributeKey);
            }

            $rendered .= ' ' . $attributeKey . '="' . strtr($attribute, '"', '\\"') . '"';
        }

        return $rendered;
    }

    /**
     * @return string
     */
    public function __toString()
    {
        return $this->render();
    }
}
API documentation generated by ApiGen