Класс TagHelper

В предыдущих уроках мы с вами делали классы, каждый из которых был предназначен для создания множества объектов. Давайте теперь потренируемся делать классы, представляющие собой набор методов для решения некоторой задачи.

Сделаем, к примеру, класс TagHelper, с помощью которого можно будет создавать HTML теги:

<?php class TagHelper { public function open($name, $attrs = []) { $attrsStr = $this->getAttrsStr($attrs); return "<$name$attrsStr>"; } public function close($name) { return "</$name>"; } // Формируем строку с атрибутами: private function getAttrsStr($attrs) { if (!empty($attrs)) { $result = ''; foreach ($attrs as $name => $value) { if ($value === true) { $result .= " $name"; } else { $result .= " $name=\"$value\""; } } return $result; } else { return ''; } } } ?>

Воспользуемся нашим классом, к примеру, для того, чтобы сделать тег div с текстом:

<?php $th = new TagHelper(); echo $th->open('div') . 'text' . $th->close('div'); // <div>text</div> ?>

А теперь используем наш класс для создания формы:

<?php $th = new TagHelper(); echo $th->open('form', ['action' => 'test.php', 'method' => 'GET']); echo $th->open('input', ['name' => 'year']); echo $th->open('input', ['type' => 'submit']); echo $th->close('form'); ?>

В результате получится следующий HTML код:

<form action="test.php" method="GET"> <input name="year"> <input type="submit"> </form>

Самостоятельно, не подсматривая в мой код, реализуйте описанный класс Tag.

Добавьте в класс Tag метод show, одновременно создающий открывающий и закрывающий теги, а также текст между ними. Метод должен принимать параметром имя тега и текст.