Считаете ли вы удобными реализации представлений в PHP-фреймворках?

StackOverflow https://stackoverflow.com/questions/692379

Вопрос

Все популярные сегодня PHP-фреймворки используют собственную реализацию уровня представления, основанную на чистых шаблонах PHP и множестве помощников.Я пробовал некоторые из них и всегда обнаруживал, что такой подход вносит огромные сложности в довольно простые вещи.Например, в Zend Framework формы и пагинация используют собственные решения для настройки внешнего вида этих элементов.Помощники заново изобретают циклы, предоставляя также довольно медленные решения, и весь уровень представления, на мой взгляд, не существует как одна часть, а большая часть его функциональности делегируется другим частям скрипта.Те же проблемы с конфигурацией возникли в Symfony и генераторе администратора, а в Kohana мне пришлось дублировать один и тот же код во всех моих формах.Действительно ли PHP является хорошим выбором для уровня представления?Вам тоже эти реализации кажутся неудобными или, может быть, почему, несмотря на все эти проблемы, они хороши и не могут быть заменены, например, умным шаблонизатором (я не имею в виду Smarty :))?

Это было полезно?

Решение

Мне нравится PHP, но, в конечном счете, в первую очередь, это язык шаблонов, а не язык программирования общего назначения. ни объектно-ориентированный язык.Не боритесь с этим.Прими это.

Я просмотрел несколько различных MVC-фреймворков, таких как Symfony, CakePHP и Zend, и мне было трудно пройти мимо примеров.Как правило, они "с этими 17 файлами вы можете сделать программу" Hello World "!" Хм?!?!

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

Я больше фанат структура «без рамок».Это действительно «сделай сам», но я думаю, что это приводит к самому экономичному и чистому конечному результату.

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

В конечном итоге большую часть времени я пишу такой PHP-скрипт.

<?
require 'config.h'; // set up constants, DB connections and so on
page_header('My Page'); // page header, site menu and so on
deny_unregistered(); // security
if (/* user submitted page */) {
  $valid = validate_form(/* validation rules */);
  if ($valid === true) {
    // do db changes
    // redirect user ie POST+REDIRECT+GET
  } else {
    // output error messages
  }
}
?>
// display page
<? page_footer(); ?>

При разумном использовании вспомогательных функций (например, ссылок на страницы) приведенное выше невероятно легко читать и отлаживать.Мне он тоже больше нравится, чем эта модель:

URL-адрес:/index.php?inc=бла

индекс.php:

<?
require "$inc.php"; // hopefully you sanitize this but so many don't
?>

Я считаю это уродливым, чреватым ошибками и даже опасным.У меня есть иерархия файлов PHP, которая отражает структуру сайта (с точки зрения меню), где каждая страница представляет собой сценарий PHP.Если у них общее поведение, они оба этого требуют (не требуется_один раз, который обычно используется для устранения плохой организации).

Просто, легко, понятно, прямолинейно.

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

Другие советы

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

Что мне не нравилось в помощниках представлений в ZF, так это то, что они обычно делали мой код скорее раздутым, чем чище.я конкретно говорю о помощнике $this->url() :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top