Это набор из нескольких классов, позволяющих легко генерировать и модифицировать html-теги
Зачем это надо?
Иногда бывает удобно, чтобы класс возвращал уже готовый html-код, например, тег img с прописанными src, шириной и высотой (которые уже известны этому классу). При этом часто возникает необходимость поправить готовый тег, например, дописать alt, title, изменить src.
Обычно приходится брать все значения по частям и составлять тег заново:
<?php
class myImage{
public static function getHtml(){
return '<img src="myimage.png">';
}
}
$img = myImage::getHtml();
/* Я хочу добавить здесь alt, но как? */
echo $img; /* <img src="myimage.png"> */
Так как же?
Заменяем строку на объект yHtmlTag
<?php
class myImage{
public static function getHtml(){
return yHtmlTag::create('img', array(
'src' => 'myimage.png'
));
}
}
$img = myImage::getHtml();
echo $img; /* <img src="myimage.png"> */
Все работает так же, но теперь мы можем делать гораздо больше:
<?php
$img['alt'] = 'My Image!'; /* Добавить alt */
$img['style'] = "border: none;"; /* Добавить style */
echo $img; /* <img src="myimage.png" alt="My Image!" style="border: none;"> */
Получить значение аттрибута
<?php
echo $img['src']; /* myimage.png */
Удалить аттрибут
<?php
unset($img['style']);
echo $img; /* <img src="myimage.png" alt="My Image!"> */
Обернуть в другой тег, который так же можно настроить позже
<?php
$a = yHtmlTag::create('a', array('href'=>'/'));
$a->appendChild($img);
$a['href'] = '/home/';
echo $a; /* <a href="/home/"><img src="myimage.png" alt="My Image!"></a> */
Установить текст, он будет автоматически экранирован при выводе
<?php
$a->setText('click here >>');
echo $a; /* <a href="/home/">click here >></a> */
Основная область применения — замена кусков кода, возвращающих готовый html в виде строки, чтобы оставить возможность для постмодификации.