В предыдущих уроках мы с вами делали классы, каждый из которых был предназначен для создания множества объектов. Давайте теперь потренируемся делать классы, представляющие собой набор методов для решения некоторой задачи.
Сделаем, к примеру, класс 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
,
одновременно создающий открывающий и закрывающий
теги, а также текст между ними. Метод должен
принимать параметром имя тега и текст.