Архив метки: Zend_Tool

Zend Framework: идеальное веб-приложение (ч. 1 из 2)

Часть вторая

Задача: написать веб-приложение с помощью Zend Framework 1.10.x, которое идеально использовало бы возможности фреймворка для определенного функционала.

Лирическое отступление: конечно, по определению невозможно создать что-то идеальное, поскольку идеальное – это совокупность субъективных образов объективной реальности, а раз программистов много и у всех свои мнения по разным вопросам, то и договориться до идеального видиния веб-приложения не получится. Однако, ведь, всё-равно хочется сделать что-то по-настоящему хорошее и масимально близко к идеалу, правда?) И в действительности к стандартизации, идеализации кода приложений всё дело и идет. Яркий пример тому относительно недавно появившиеся тенденции к использованию паттернов и фреймворков.

Так к чему это всё? В n-ый раз перечитывая нередко меняющийся Zend Framework Quickstart, я заметил, что у них постепенно получается четкая и абсолютно прозрачная схема разработки веб-приложения. Для каждого случая, будь-то работа с формами или выемка данных из БД, есть свой паттерн, общепринятое решение (ну ладно, не всеобщее, а принятое умными дядьками из Zend). Значит, теоретически вполне возможно привести культуру написания кода к такому уровню, что программисты будут писать одинаковый, абсолютно правильный и понятный каждому код, свободный от уязвимостей и ошибок. Увидев постановку задачи, два абсолютно разных программиста в уме уже разметят будущую архитектуру веб-приложения, наборы классов и интерфейсов, и эти архитектуры будут абсолютно идентичны. Вроде Java Beans именно для этого и придумали, да? Для мира php я пока такого не встречал.

Скажете, это будет слишком грустно и неинтересно? Достигнув определенного уровня знания, программирование превратиться в рутину, однообразное складывание одних и тех же кирпичиков, в банальное ремесло? Как знать! Из простых каменных блоков строят и пирамиды в Египте, и великие китайские стены. В конце концов, важнее всего качественный и надежный результат. Впрочем, хватит лирики.)

Что же будет в этой статье? В ней приводится пример веб-приложения, в котором я попробую максимально верно использовать ZF и небольшой набор паттернов для решения простых и рутинных проблем, типа выемки данных из БД, запихивания их в формы, отображения списков и прочее. Конечно, это только моё видиние решения, и чувствуется, что некоторые паттерны я использую не совсем так, и вообще, логика обработки запросов должна быть не в том маппере, а вот в той модели и пр. пр. пр…)

Что будет в приложении:

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

Что будет «под капотом»:

  • Модели и мапперы для основных сущностей (статей и авторов);
  • Отдельные классы-шлюзы для работы с таблицами в БД;
  • Связка классов-шлюзов для выполнения агрегирующих запросов (в случае связей один-ко-многим, многие-ко-многим).

Ну поехали.)

Читать далее