Класс 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 сайта'.