PHP

Генерация HTML с помощью yuki-html

Это набор из нескольких классов, позволяющих легко генерировать и модифицировать 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 в виде строки, чтобы оставить возможность для постмодификации.
Добавлено: 04 Сентября 2013 02:15:32 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...