РНР: объекты, шаблоны и методики программирования [Мэтт Зандстра] (pdf) читать постранично, страница - 141

-  РНР: объекты, шаблоны и методики программирования  [5-е издание] (пер. Инна В. Берштейн) 51.94 Мб, 738с. скачать: (pdf) - (pdf+fbd)  читать: (полностью) - (постранично) - Мэтт Зандстра

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

то в результате воз­
врата кода состояния CMD OK механизм пересылки запустит ее только по пути
/addspace. Причем это произойдет только для пути /addvenue. А если в запро­
се, по которому вызывается данная команда, указан путь /quickaddvenue, то
никакой пересылки не произойдет и отобразится представление quickaddvenue,
хотя команде типа AddVenue об этом ничего неизвестно. Она просто придержи­
вается своих основных обязанностей.
Выводы

Реализовать полноценный пример шаблона Application Controller не­
легко, потому что придется немало потрудиться, чтобы получить и применить
метаданные, описывающие взаимосвязи команды с запросом, представлением и
с другими командами.

410

ЧАСТЬ III

ШАБЛОНЫ

Поэтому я стараюсь реализовать нечто подобное, когда совершенно очевид­
но, что это необходимо для приложения. Мне словно кто-то нашептывает это,
когда я ввожу условные операторы в команды, вызывающие разные представ­
ления или другие команды в зависимости от обстоятельств. И в этот момент я
понимаю, что поток команд и логика отображения начинают выходить из-под
моего контроля.
Безусловно, в контроллере приложения могут применяться всевозможные
механизмы для установления взаимосвязей команд с представлениями, а не
только тот подход, который был применен здесь. Даже если начать в любом
случае с фиксированной взаимосвязи строки запроса с наименованием команды
и представлением, то все равно можно извлечь немалую выгоду из построения
контроллера приложения, где все это инкапсулировано. Это обеспечит значи­
тельную степень гибкости, когда потребуется реорганизовать код, чтобы при­
способиться к более высокому уровню сложности.

Шаблон Page Controller
Несмотря на то что мне очень нравится шаблон Front Controller, при­
менять его целесообразно далеко не всегда. Применение данного шаблона на
стадии предварительного проектирования может иметь положительные послед­
ствия для крупных систем и отрицательные для простых проектов, которые тре­
бует быстро реализовать. И здесь может пригодиться шаблон Page Controller
(Контроллер страниц), с которым вы, вероятно, уже знакомы, поскольку он ча­
сто выбирается в качестве общей стратегии проектирования. Тем не менее не­
которые вопросы его применения все же стоит обсудить.
Проблема

И в данном случае задача состоит в том, чтобы управлять взаимосвязью за­
проса, логики приложения и представления данных. В корпоративных проектах
это практически постоянная задача, а изменяются только накладываемые огра­
ничения.
Так, если имеется относительно простой проект, где развертывание крупной
многофункциональной структуры приведет только к срыву сроков сдачи про­
екта, не дав практически никаких преимуществ, то шаблон Page Controller
станет удобным инструментальным средством управления запросами и пред­
ставлениями.
Допустим, требуется вывести страницу, на которой отображается список всех
культурных заведений в рассматриваемой здесь системе. Даже если у нас уже
имеется готовый код для извлечения такого списка из базы данных, без приме­
нения шаблона Page Controller перед нами все равно встанет трудная задача
достижения такого простого на первый взгляд результата.
Итак, список культурных заведений должен отображаться на странице пред­
ставления, и для его получения необходимо выполнить запрос. При обработке

ГЛАВА 12

ШАБЛОНЫ КОРПОРАТИВНЫХ ПРИЛОЖЕНИЙ

411

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

Несмотря на то что при применении шаблона Page Controller могут воз­
никать определенные трудности, сам шаблон довольно прост. В частности,
контроллер по этому шаблону связан с отдельным представлением или рядом
представлений. В простейшем случае это означает, что контроллер находится
в самом представлении, хотя его можно отделить, особенно если одно пред­
ставление тесно связано с другими представлениями (т.е. в том случае, если в
различных ситуациях требуется отсылать браузер на разные страницы). Ниже
приведен простейший пример реализации шаблона Page Controller.