# Класс Tag

Сейчас мы с вами сделаем класс `Tag` для упрощения работы с HTML тегами. Имея такой класс мы, вместо того, чтобы набирать HTML теги вручную, будем использовать для этого PHP.

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

## Приступим к реализации

Итак, наш класс называется `Tag` - это неспроста. Каждый объект этого класса будет представлять собой отдельный тег, с которым мы будем производить определенные операции.

Давайте будем передавать имя создаваемого тега в конструктор объекта и записывать в приватное свойство `$name`:

`<?php class Tag { private $name; // свойство для хранения имени тега public function __construct($name) { $this->name = $name; } } ?>`

Сделаем с помощью нашего класса, к примеру, объект для тега `<input>` (пока на экран ничего не выведется):

`<?php $input = new Tag('input'); ?>`

Пока мы просто получили объект с инпутом. Давайте добавим еще метод, с помощью которого мы будем выводить тег на экран.

Здесь следует иметь ввиду то, что теги бывают открывающие, например, `<div>`, и закрывающие, например, `</div>`. Некоторые теги не имеют закрывающего тега, например, `<input>` или `<img>`.

Давайте для начала сделаем метод `open`, который будет только открывать тег (в случае с инпутами больше никакой метод и не понадобится, так как они не требуют закрытия).

Итак, реализуем:

`<?php class Tag { private $name; public function __construct($name) { $this->name = $name; } // Выводим открывающую часть тега: public function open() { $name = $this->name; return "<$name>"; } } ?>`

Давайте проверим работу нашего метода:

`<?php $tag = new Tag('input'); echo $tag->open(); // выведет <input> ?>`

Запустите этот код, и в окне браузера действительно появится инпут. Чтобы посмотреть исходный HTML код, в окне браузера можно будет нажать комбинацию клавиш `Ctrl+U` - там вы увидите код нашего инпута.

Открытый исходный код можно обновлять, будто обычную страницу браузера. Вы можете менять ваш PHP код и сразу проверять изменения HTML кода, отправляемого в браузер.

Давайте теперь сделаем метод `close` для закрывающей части тега:

`<?php class Tag { private $name; public function __construct($name) { $this->name = $name; } public function open() { $name = $this->name; return "<$name>"; } // Выводим закрывающую часть тега: public function close() { $name = $this->name; return "</$name>"; } } ?>`

Воспользуемся этим методом:

`<?php $tag = new Tag('div'); echo $tag->open() . 'text' . $tag->close(); // выведет <div>text</div> ?>`

## Практические задачи

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

Создайте с помощью класса `Tag` тег `<img>` и выведите его на экран.

Создайте с помощью класса `Tag` тег `<header>` и выведите его на экран с текстом `'header сайта'`.

← →
↑