【发布时间】:2012-07-28 21:57:33
【问题描述】:
使用 PHP DOM - html 操作。这是输出 HTML 标记的非常有效的方法(至少可以防止代码中的逻辑和标记混乱)。
但是,要生成 50 行 html 标记,必须用 PHP 编写大约 200 行 :( .
示例代码:
...
$signup_form = $document->createElement('form');
$signup_form->setAttribute('id', 'signup_form');
$signup_form->setAttribute('action', 'registration/signup.php');
$signup_form->setAttribute('method', 'post');
$su_fname_label = $document->createElement('label');
$su_fname_label->setAttribute('for', 'fname');
$su_fname_label_content = $document->createTextNode('Name');
$su_fname_label->appendChild($su_fname_label_content);
$su_fname_textbox = $document->createElement('input');
$su_fname_textbox->setAttribute('name', 'fname');
$su_fname_textbox->setAttribute('class', 'valid');
$su_fname_textbox->setAttribute('placeholder', 'Please enter your name');
$su_fname_textbox->setAttribute('type', 'text');
...
如您所见,它只有 1 个表单元素。想象一下,如果 HTML 表单中有 5 个元素,那么 php 代码将是巨大的。我想知道,有没有办法缩小前任。通过一次设置多个属性?有什么建议吗?
【问题讨论】:
-
在 HTML 代码中嵌入 PHP 的 sn-ps 有什么问题?我认为之后它会更具可读性。
-
哇,好有趣!
-
除了编写自己的辅助函数或用于创建单个元素的专用类之外,没有。 DOM 是一个冗长的 API。
-
确实是个缺点。但是,我倾向于不以这种方式“制作”HTML:我只是加载一个预制的 HTML 模板,然后用 PHP 填写一些细节。我其实更喜欢不符合 DOM 的
DOMDocumentFragment;)