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. */ abstract public function __toString(); }