Это излишество или хорошее использование HTML-помощника CakePHP?

Я просто переформатировал макет по умолчанию для моего приложения CakePHP. Я исключил как можно больше встроенного html, поместив почти все в html-вспомогательные методы.

Это было весело, но мне интересно, какую пользу я получил от этого упражнения, если таковое имеется?

<?php
    $output = implode("\n", array(
        $html->docType(),
        $html->tag('html', implode("\n", array(
            $html->tag('head', implode("\n", array(
                $html->charset(),
                $html->tag('title', 'Title For App'),
                $html->css('css', NULL, array('media' => 'screen,print')),
                $html->css('print', NULL, array('media' => 'print')),
                $html->script(array('cufon', 'jquery','external'))
            ))),
            $html->tag('body', implode("\n", array(
                $html->tag('div', $content_for_layout, array('id' => 'wrapper')),
                $html->scriptBlock('Cufon.now();')
            )))
        )), array('xmlns' => 'http://www.w3.org/1999/xhtml'))
    ));
    echo $output;
?>

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

Мне это нравится, а мне нет.

Я думаю, мне нужно убедить так или иначе.

Если вам интересно, при просмотре источника на имплоздах появляются хорошие разрывы строк в html.

8
задан Stephen 13 July 2010 в 00:11
поделиться

4 ответа

Я обсуждал это в группе Google несколько лет назад. В конце концов, вы поймете, что нет особой разницы, каким способом вы это делаете, пока вам не понадобится программно манипулировать материалом - тогда, если вы пошли по пути HTML, вы обнаружите, что ваш код переполнен & ?> или конкатенациями строк, или подстановками переменных в двойных кавычках.

Сейчас, при использовании многих приложений, я предпочитаю поддерживать те, в которых больше помощников, чем разметки.

В HTML есть много такого, что не покрывается хелперами, поэтому нельзя избежать смешения, но можно минимизировать сложность и путаницу, используя хелперы везде, где это возможно. Когда вы начинаете использовать формы, вы получаете много вещей, связанных с безопасностью, а также идентификаторы и имена, отформатированные так, как предпочитает CakePHP.

PHP и CakePHP созданы для этого. Зачем использовать только половину языка или половину фреймворка?

10
ответ дан 5 December 2019 в 06:22
поделиться

Программно это очень правильно, потому что на самом деле вы никогда не создаете строку. Что приятно, так это то, что поскольку каждая вещь является функцией, вы можете передавать ей всевозможные параметры, а всю логику перекладывать на контроллеры. Так, например, ваш заголовок может быть динамически сгенерирован для каждой страницы, а затем передан в ваш вызов $html->tag('title', 'Title For App').

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

1
ответ дан 5 December 2019 в 06:22
поделиться

Неоспоримым преимуществом этого является 100% правильный синтаксис, поскольку вы устранили любую возможность жирной аппликатуры и отсутствия открывающих / закрывающих тегов. Но что я могу сказать вам по опыту, так это то, что через полгода эту структуру будет вдвое труднее читать и изменять. Также очень сложно вставлять условные элементы. Здесь вам нужно прибегнуть к тернарному оператору, что делает вещи еще менее удобочитаемыми.

В целом, я бы рекомендовал использовать традиционное сочетание HTML / PHP.

8
ответ дан 5 December 2019 в 06:22
поделиться

Используя помощников, вы в некотором смысле защищаете свой код в будущем. Поэтому, когда появляется HTML5 и теги html или head изменяются в новой спецификации. Теоретически вы просто меняете свой вспомогательный класс html, и вся ваша разметка - HTML5.

Однако, напротив, вы также полагаетесь на Cake для создания правильно сформированных тегов. Хотя многие из этих фреймворков представляют собой полный стек, неизбежно есть области, с которыми они справляются лучше, чем другие. Вы не должны ожидать, что они будут использовать весь набор тегов HTML.

Я лично считаю, что делать то, что ты сделал, - это излишне. Мне нравится использовать помощники HTML для ссылок, URL-адресов и включаемых файлов из-за преимуществ сопоставления каталогов. Но я не использую помощников для создания простого тега div .

3
ответ дан 5 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: