Современные платформы (фреймворки) разработки веб- приложений на PHP

4,141 views

Published on

Презентация Сергея Шимко

Published in: Technology, Design
  • Be the first to comment

  • Be the first to like this

Современные платформы (фреймворки) разработки веб- приложений на PHP

  1. 1. Современные платформы (фреймворки) разработки веб- приложений на PHP Сергей Шимко Разработчик Magento Community и Enterprise Editions
  2. 2. Современные платформы (фреймворки) разработки веб-приложений на PHP Структура доклада I. Введение IV. Многопользовательские • Требования к приложения, платформам разработки разграничение прав • Преобладание V. События в веб- парадигмы OOP и паттерна MVC приложениях (принцип publish/subscribe) II. Интернационализация, локализация VI. Производительность, кэширование III. Роутинг/формирование URL VII. Заключение
  3. 3. I. Введение Основные тезисы • Долгое время разработка веб-сайтов велась без использования возможностей ООП • Web Application Framework – ответ на возросшие требования к веб-приложениям • Одна из основных задач фреймворка – реализация функционала, общего для любого веб-приложения
  4. 4. II. Интернационализация и локализация Интернационализация (i18n) – адаптация продукта для потенциального использования практически в любой точке земного шара Локализация (L10n) – «тонкая» настройка продукта для использования в конкретном регионе, который имеет уникальные языковые и культурные особенности
  5. 5. Параметры интернационализации • Язык  Текст  Графические элементы, содержащие текст  Мулитимедийный контент, зависящий от языка  Правила сравнения/преобразования строк • Часовой пояс • Формат даты и времени • Формат чисел • Валюта • Единицы мер и весов • Адреса и номера телефонов
  6. 6. Интернационализация и локализация Понятие локали Локаль (locale) – предустановленный набор значений для каждого параметра интернационализации, имеющих смысл для конкретного региона en_US.UTF-8 язык страна charset ISO 639-1 ISO 3166-1
  7. 7. Реализация интернационализации Zend Framework Symfony Classes: Classes: Zend_Locale sfCultureInfo Zend_Locale_Format sfI18N Zend_Translate Zend_Date Functions: Zend_Currency __() Zend_Validate format_date() Zend_Form format_datetime() format_number() format_currency() format_country()
  8. 8. III. Роутинг/формирование URL Основные вопросы • Обработка запроса в веб-приложении (без учета ACL) • Формирование friendly URL • Разбор friendly URL
  9. 9. Процесс обработки запроса без учета ACL нет да Request содержит: • Модуль • Контроллер • Action • Параметры нет да
  10. 10. Роутинг/формирование URL Формирование friendly URL Формирование URL Параметры Системный URL Friendly URL Таблица преобразований Системные Friendly URL URL
  11. 11. Роутинг/формирование URL Разбор friendly URL Разбор URL Friendly URL Системный URL Параметры Таблица преобразований Системные Friendly URL URL
  12. 12. Реализация роутинга/формирования URL Zend Framework Symfony Classes: Classes: Zend_Controller_Router_Abstract sfRouting Zend_Controller_Router_Rewrite sfPatternRouting Zend_Controller_Router_Route sfRoute Zend_Controller_Router_Route_* sfRequestRoute Functions: url_for() link_to()
  13. 13. IV. Многопользовательские приложения, разграничение прав
  14. 14. Процесс обработки запроса с учетом прав доступа Routing Request содержит полную информацию о запрошенном ресурсе да Access Denied да $request->setControllerName(‘error’) ->setActionName(‘forbidden’); нет $request->setControllerName(‘auth’) ->setActionName(‘login’); Controller
  15. 15. Многопользовательские приложения, разграничение прав ACL – основа систем с избирательным управлением доступом ACL (Access Control List) – список контроля доступа; содержит информацию о разрешенных и запрещенных операциях субъекта над конкретным объектом
  16. 16. Многопользовательские приложения, разграничение прав Терминология ACL • Ресурс - объект, к которому необходимо контролировать доступ • Субъект - пользователь, который запрашивает доступ • Разрешения (Permissions) - режимы доступа к ресурсу • Роль - название, которое определяется при авторизации • Сеанс - соответствие между Субъектом, Ролью (Разрешениями)
  17. 17. V. События в веб-приложениях • Проблема зависимостей при модульной архитектуре приложения • Избежание жесткой зависимости модулей с помощью событий • Принцип publish/subscribe (pub/sub) • Событие (сообщение) • Отправитель (издатель) • Получатель (подписчик) • Диспетчеризация возникшего события
  18. 18. Синхронная диспетчеризация события ... $eventObj->setFlag(true); fireEvent(‘event_name’, $eventObj); $eventListener1->execute($eventObj); ... $eventObj->setFlag(false); ... $eventListenerN->execute($eventObj); ... if ($eventObj->getFlag()) ...
  19. 19. Асинхронная диспетчеризация события ... $eventObj->setFlag(true); fireEvent(‘event_name’, $eventObj); if ($eventObj->getFlag()) ... $eventListener1->execute($eventObj); … ... $eventObj->setFlag(false); ... $eventListenerN->execute($eventObj);
  20. 20. Реализация publish/subscribe Zend Framework Symfony Только в планах :-( Classes: sfEvent sfEventDispatcher
  21. 21. VI. Производительность и кэширование Кэширование (cache) – сохранение результатов вычисления с целью более быстрого получения результата при выполнении повторного вычисления Операции с хранилищем • Запись в хранилище • Проверка записи в хранилище • Чтение из хранилища • Удаление записи из хранилища • Инвалидация записей в хранилище
  22. 22. Процесс кэширования calc_cache_id() calc() check_cache() collect_tags() да нет save_cache() load_cache ()
  23. 23. Производительность и кэширование Эффективность t(calc_cache_id()) t(check_cache()) t(calc_cache_id()) t(calc()) t_save t(check_cache()) t_load t(collect_tags()) t(load_cache()) t(save_cache()) t_load значительно меньше t(calc()) t_save незначительно больше t(calc())
  24. 24. Реализация кэширования Zend Framework Symfony Classes: Classes: Zend_Cache sfCache Zend_Cache_Backend_* sf*Cache Zend_Cache_Frontend_Function sfFunctionCache Zend_Cache_Frontend_* Zend_Cache_Core
  25. 25. VII. Заключение
  26. 26. Спасибо за внимание! Дякую за увагу! Thank You! Буду рад ответить на Ваши вопросы!

×