В зависимости от вашей потребности в скорости, и если вы можете использовать кэширование и т.п., может быть полезна библиотека, такая как phpQuery .
Это «порт»от jQuery
до PHP и обладает той же универсальностью и простотой, что и jQuery
.Однако, по моему опыту, это не так быстро, как мне хотелось бы при генерации кода (у меня нет , однако я провел какие-то тщательные тесты, это просто ощущение).
код, который вы привели в качестве примера, может быть выражен в следующих строчках с помощью phpQuery
( непроверенный ):
$form = pq ('<form />')
->attr (array (
'id' => 'signup_form',
'action' => 'registration/signup.php',
'method' => 'POST',
));
$label = pq ('<label />')
->html ('Name')
->attr ('for', 'fname')
->appendTo ($form);
$text = pq ('<input />')
->attr (array (
'name' => 'fname',
'data-placeholder' => 'Please enter your name',
'type' => 'text',
))
->addClass ('valid')
->appendTo ($label);
Я написал его в том формате, который мне нравитсянемного больше строк, чем в коде, который вы предоставили;но это может быть легко уменьшено до 5-10 строк с сохраняемой читаемостью, если вы предпочитаете более компактное кодирование.Во всяком случае, я нахожу, что это намного легче читать, и вам не нужно писать так много DOM
кода, чтобы генерировать довольно много HTML-кода.
Кроме того, учитывая, что phpQuery
использует ту же концепцию обтекания, что и jQuery
, развернутый узел, например $form
в приведенном выше коде, является обычным DOMNode
, если не заключен в pq()
.Это дает вам большую гибкость либо в использовании удобных подпрограмм phpQuery
, либо в более «фундаментальной» функциональности PHP DOM
.