PHP: создание (X) вывода HTML с DOM - плюсы и минусы? - PullRequest
3 голосов
/ 03 марта 2010

Я только начал работу с новым сайтом и решил использовать DOMImplementation для создания всего сайта.

Что вы думаете об этом, достаточно ли быстро? Я ожидаю, что это будет немного медленнее, чем основной метод печати. Я предпочитаю DOM, потому что он обеспечивает большую гибкость при построении конечного результата, не говоря уже о более безошибочном XHTML. Во всяком случае, я хотел бы иметь хотя бы некоторое сравнение скорости.

Не могли бы вы порекомендовать мне какие-либо (возможно, совершенно очевидные) идеи по поддержанию чистоты кода PHP (т.е. поддерживать HTML на минимальном уровне)?

Ответы [ 2 ]

3 голосов
/ 03 марта 2010

У вас может быть класс Widget с такими методами, как checkBox, textArea и тому подобное. Ваш базовый класс View / Controller определяет функцию addContent ($ aString). Когда вы создаете форму, вы говорите что-то вроде

$builder = new Widget();
$this->addContent($builder->textArea("Description", $description, 5, 100);
$this->addContent($builder->radioGroup("Platform", array("FreeBSD", "Linux", "Windows"), $platform, 100);

, где

public function textArea($name, $value, $numLines, $width) {...}
public function radioGroup($title, $nameArray, $selectedValue, $width0 {...}
// etc.

Тогда ваши формы ничего не знают о HTML: они работают строго с компонентами пользовательского интерфейса. Подклассы вашего класса Widget могут генерировать HTML или любой другой.

2 голосов
/ 03 марта 2010

Это достаточно быстро? Конечно, это полностью зависит от вашего сайта. Для тривиального или прототипного сайта это было бы хорошо, но я, конечно, не хотел бы развертывать DOM-шаблонное решение на сложном сайте с большим трафиком.

Вы не сможете создавать HTML-совместимый XHTML таким образом; вам придется выбирать между saveXML, который создает чистый, не совместимый с IE XHTML, и saveHTML, который создает HTML4. Элементы CDATA, такие как style и script, также могут нуждаться в некотором внимании.

Вызовы DOM также очень многословны для создания контента, например, для создания узлов в JavaScript без использования вспомогательных функций или каркасов. Я не уверен, что полученный код будет таким читабельным по сравнению с шаблонами PHP.

Вы можете сделать PHP-шаблон "более чистым" более простым способом, используя согласованное дерево разметки, обрабатывая структуры PHP, такие как <?php if (condition) { ?> ... <?php } ?>, как если бы они были начальными и конечными тегами XML, и всегда вкладывая и отступая их последовательно в «хорошо сформированном» стиле. См. Например этот вопрос для некоторого обсуждения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...