Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Заметки Дизайнера" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Построй свой сайт на PHP!
Информационный Канал Subscribe.Ru |
Построй свой сайт на PHP! |
||
Здравствуйте, уважаемые читатели!
Прежде всего хочу очень сильно извинится за неприятный случай с прошлым выпуском - стоило мне дать в прошлом выпуске ссылку на переведенную мной статью, прямо из-за угла выскочил автор со своим адвокатом, оба-два доселе молчавшие, и попросили меня все следы перевода убрать до углубленного анализа, чего можно, а чего нельзя переводчику и что за это все полагается автору. Неприятно, но ладно. Зато в этот раз я публикую этот самый злополучный перевод, с которым вы можете ознакомится, если не обладали достаточным количесвтом везения, чтобы сделать это раньше. [пиар]. Я очень жду вас на http://phpdevelop.info/, так как если заходить туда каждый день, то можно найти много всяких интересных PHP-проектов. Вы можете также подписаться на rss-заголовки в результате чего все еще больше упрощается. Кроме того, вам, наверное, интересно бы было ознакомится с двумя новыми переводами, а именно: "Трёхзвенная разработка в PHP 5" и "Перегрузка в PHP 5". Обе-две достаточно интересны и полезны, но лично я бы особенно отметил вторую. Впрочем, решать вам. Еще один, уже совсем злостный пиар связан с открытием моей рассылки "КиноЛоги - субъективные заметки о кино". Рассылка все еще "Бронзовая", а подписчиков там ровно один: мне посчастливилось открыть ее тринадцатого числа, а бронзовые рассылки за этот день Subscribe'ом, увы и ах, проанонсированы в его мега-рассылке не были. Так она и висит в каталоге "бронзовых" сокрытой от глаз жемчужиной. ;-) Если вы любите хорошее кино - подписывайтесь, думаю, что не пожалеете. [/пиар] Реализация Front Controller на PHPАвтор: Эван МакКаллум (Ethan McCallum)Недавно я получил возможность реализовать несколько маленьких (некоммерческих) веб-сайтов на PHP. Одно из многих решений, с которыми я столкнулся, касалось стратегии шаблонизации:
дублирующиеся, основанные на К счастью, данный веб-хост разрешал переназначение определенных ключевых директив Apache через
Шаблон проектирования Front Controller описывает способ централизации обработки данных в веб-приложениях. Маршрутизация всех запросов через единственную точку входа предоставляет место для реализации основной логики приложения и, в то же время, ослабляет зависимости между другими компонентами. Все это складывается в сайт, который легче поддерживать и расширять. В этой статье я поделюсь сокращенной версией контроллера, реализованного мной как средство связи между содержимым и разметкой. То, что я объясняю здесь, не ограничивается только PHP; шаблон проектирования Front Controller доступен в многих инструментариях для динамической генерации страниц на стороне сервера, таких как mod_perl и Java-сервлеты/JSP. В отличие от этих технологий, реализация Front Controller, предоставленая в этой статье, требует только ограниченной настройки Apache. Ваш веб-хост с поддержкой PHP вероятнее всего поддерживает требуемую конфигурацию. Код примера был протестирован под Apache 1.3.27 и PHP 4.3.4. Сначала немного теорииОбычно веб-сервер - это разрекламированный сервис файлов. Клиент запрашивает файл, а сервер извлекает его. Uniform Resource Identifier (URI) (универсальный идентификатор ресурса - прим. переводчика) определяет файл в корневой директории, так что ответ и запрос тесно связаны. Веб-серверы также могут вместо выдачи необработанных файлов запускать исполняемые файлы, такие как CGI или PHP скрипты. Исполняемые файлы вставляют логику между запросом и ответом, изменяя части последнего (к примеру, чтобы добавить приветствие для конкретного пользователя или получить определенные записи из БД) с каждым вызовом. Можно направлять все запросы через единственный исполняемый файл, генерируя полностью различные страницы для каждого. В этом случае, исполняемый файл - Front Controller сайта, а сгенерированный ответ - представление. URI и параметры запроса составляют команду, отправляемую контроллеру, который выполняет некоторую логику, чтобы решить, какой результат отправить пользователю. Центральное расположение контроллера в цикле запрос-ответ делает его подходящим местом для применения основной логики для проверки прав или установки заголовков ответа. Веб-сайт, управляемый контроллером, в известной степени действует независимо от нижележащего веб-сервера; доступ к файлам, аутентификация и генерация содержимого происходят внутри кода. Вот почему контроллер может иметь доступ к файлам внутри директорий, которые в иных обстаятельствах имеют ограничения, прописанные в Борцы за частоту языка заметят, что описание содержит сокращения, и в нем втречаются такие действующие лица, как диспетчер, свернутый в главный контроллер. Этот код является отправной точкой и вы можете расширять его по мере своих надобностей. Прямой и косвенныйКлиенты должны вызывать контроллер либо прямо, либо косвенно. Прямой метод добавляет параметры запроса к URI контроллера:
Все внутресайтовые ссылки указывают на Косвенный метод содержит меньше всего ненужного и выглядит более естетсвенно, но конкретная настройка зависит от используемого веб-сервера. Конфигурационная директива Apache
Заметьте, что здесь нет явной ссылки на контроллер. Ассоциирование контроллера
с расширением файла (Скрытый) исполняемый файл здесь - это обработчик содержимого Apache. Когда пользователь запрашивает соответсвующий URI, Apache обходит свой обычный процесс запроса/ответа и передает контроль зарегистрированному обработчику. Затем генерация содержимого для возврата запрашивающему браузеру целиком лежит на обработчике. В этой статье демонстрируется косвенный метод и используются расширения файлов. Простой примерРазъясним моменты, о которых шла речь в предыдущем разделе, при помощи конкретного примера. Рассмотрим следующий код,
Представим, что В
объявляют Попробуйте следующее: запросите
Первый URL показывает все параметры запроса и переменные сервера. То же делает и второй URL, несмотря на то, что строка запроса меняется. Здесь был запрошен
Как и полагается, третий URL не работает. Запрашиваемый ресурс может быть полностью виртуальным, но директории, ведущие к этому ресурсу, должны существовать. Запросы к
Также управляемые контроллером ресурс не может быть индексным файлом. Явный
запрос Эти два ограничения основаны на том, как Apache преобразовывает запросы. Это детально описано в статье Writing Apache Modules with Perl and C. Как насчет Apache 2.x?Пользователи Apache 2 обнаружат, что Но надежда есть. Соответственно этому рапорту об ошибке, Apache 2.1 может добавить конфигурационную директиву, чтобы смягчить этот запрет, из условия, чтобы Объединяя: обзор сайта-примераСайт-пример для этой статьи использует Front Controller для отделения содержимого от разметки. Контроллер преобразует запрашиваемые URI в файлы с содержимым, а затем объединяет содержимое с шаблоном разметки во время запроса.
Реальный файлы содержимого в директории Директории
Директории-заглушки Процесс запросаКогда сайт получает запрос на файл, управляемый контроллером:
Теперь сервер может вернуть завершенный HTML-документ клиентскому браузеру. А мне это подходит?Немногие техники подходят каждому. Если обновления вашего сайта затрагивают добавление новых страниц налету, то нагрузка от поддержки таблицы преобразований может сыграть против вас. Однако, если динамичная природа вашего сайта зависит от чего-то вне необработанных страниц (например, базы данных) или если ваши обновления затрагивают внимательно спланированные перемещения, то техника Front Controller может принести вам пользу в долгосрочной перспективе. ЗаключениеFront Controller, показанный в этой статье, отделяет запрос от ответа, разметку от содержимого и страницы содержимого друг от друга. Такое разделение предлагает заметную гибкость, как по сравнению с HTML-страницами, так и дублирующимися построенными на Этот пример - всего лишь отправная точка. Конечно, контролер должен делать большее на основе входа в систему или проверки аутентификации. Класс Для получения большей информации по шаблону проектирования Front Controller, отправляем к текстам, перечисленным в разделе Ресурсы. Ресурсы
Об автореЭван МакКаллум (Ethan McCallum) превратился из любознательного ребенка в любознательного взрослого, направляя свою страсть к технологии в карьеру. Как свободный (freelance) консультант, он занимается Unix/Linux, C++ и Java. Эван также является автором "Compile Time", колонки в Linux Magazine о разработке Linux-приложений. |
Copyright © 2004-2005 Построй свой сайт на PHP! Перепечатка возможна только с сохранением авторства. |
Выпуск #10: 2005-06-28 |
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.phpdev |
Отписаться
Вспомнить пароль |
В избранное | ||