• Save
Современные платформы (фреймворки) разработки веб- приложений на PHP
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 4,092 views
Uploaded on

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

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

More in: Technology , Design
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
4,092
On Slideshare
2,629
From Embeds
1,463
Number of Embeds
8

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 1,463

http://mageconf.com 1,296
http://mageconf.local 59
http://dev.mageconf.com 37
http://mageconf 32
http://blog.quartsoft.com.ua 31
http://www.slideshare.net 4
http://quartsoft.blogspot.com 3
http://translate.googleusercontent.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Современные платформы (фреймворки) разработки веб- приложений на PHP Сергей Шимко Разработчик Magento Community и Enterprise Editions
  • 2. Современные платформы (фреймворки) разработки веб-приложений на PHP Структура доклада I. Введение IV. Многопользовательские • Требования к приложения, платформам разработки разграничение прав • Преобладание V. События в веб- парадигмы OOP и паттерна MVC приложениях (принцип publish/subscribe) II. Интернационализация, локализация VI. Производительность, кэширование III. Роутинг/формирование URL VII. Заключение
  • 3. I. Введение Основные тезисы • Долгое время разработка веб-сайтов велась без использования возможностей ООП • Web Application Framework – ответ на возросшие требования к веб-приложениям • Одна из основных задач фреймворка – реализация функционала, общего для любого веб-приложения
  • 4. II. Интернационализация и локализация Интернационализация (i18n) – адаптация продукта для потенциального использования практически в любой точке земного шара Локализация (L10n) – «тонкая» настройка продукта для использования в конкретном регионе, который имеет уникальные языковые и культурные особенности
  • 5. Параметры интернационализации • Язык  Текст  Графические элементы, содержащие текст  Мулитимедийный контент, зависящий от языка  Правила сравнения/преобразования строк • Часовой пояс • Формат даты и времени • Формат чисел • Валюта • Единицы мер и весов • Адреса и номера телефонов
  • 6. Интернационализация и локализация Понятие локали Локаль (locale) – предустановленный набор значений для каждого параметра интернационализации, имеющих смысл для конкретного региона en_US.UTF-8 язык страна charset ISO 639-1 ISO 3166-1
  • 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. III. Роутинг/формирование URL Основные вопросы • Обработка запроса в веб-приложении (без учета ACL) • Формирование friendly URL • Разбор friendly URL
  • 9. Процесс обработки запроса без учета ACL нет да Request содержит: • Модуль • Контроллер • Action • Параметры нет да
  • 10. Роутинг/формирование URL Формирование friendly URL Формирование URL Параметры Системный URL Friendly URL Таблица преобразований Системные Friendly URL URL
  • 11. Роутинг/формирование URL Разбор friendly URL Разбор URL Friendly URL Системный URL Параметры Таблица преобразований Системные Friendly URL URL
  • 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. IV. Многопользовательские приложения, разграничение прав
  • 14. Процесс обработки запроса с учетом прав доступа Routing Request содержит полную информацию о запрошенном ресурсе да Access Denied да $request->setControllerName(‘error’) ->setActionName(‘forbidden’); нет $request->setControllerName(‘auth’) ->setActionName(‘login’); Controller
  • 15. Многопользовательские приложения, разграничение прав ACL – основа систем с избирательным управлением доступом ACL (Access Control List) – список контроля доступа; содержит информацию о разрешенных и запрещенных операциях субъекта над конкретным объектом
  • 16. Многопользовательские приложения, разграничение прав Терминология ACL • Ресурс - объект, к которому необходимо контролировать доступ • Субъект - пользователь, который запрашивает доступ • Разрешения (Permissions) - режимы доступа к ресурсу • Роль - название, которое определяется при авторизации • Сеанс - соответствие между Субъектом, Ролью (Разрешениями)
  • 17. V. События в веб-приложениях • Проблема зависимостей при модульной архитектуре приложения • Избежание жесткой зависимости модулей с помощью событий • Принцип publish/subscribe (pub/sub) • Событие (сообщение) • Отправитель (издатель) • Получатель (подписчик) • Диспетчеризация возникшего события
  • 18. Синхронная диспетчеризация события ... $eventObj->setFlag(true); fireEvent(‘event_name’, $eventObj); $eventListener1->execute($eventObj); ... $eventObj->setFlag(false); ... $eventListenerN->execute($eventObj); ... if ($eventObj->getFlag()) ...
  • 19. Асинхронная диспетчеризация события ... $eventObj->setFlag(true); fireEvent(‘event_name’, $eventObj); if ($eventObj->getFlag()) ... $eventListener1->execute($eventObj); … ... $eventObj->setFlag(false); ... $eventListenerN->execute($eventObj);
  • 20. Реализация publish/subscribe Zend Framework Symfony Только в планах :-( Classes: sfEvent sfEventDispatcher
  • 21. VI. Производительность и кэширование Кэширование (cache) – сохранение результатов вычисления с целью более быстрого получения результата при выполнении повторного вычисления Операции с хранилищем • Запись в хранилище • Проверка записи в хранилище • Чтение из хранилища • Удаление записи из хранилища • Инвалидация записей в хранилище
  • 22. Процесс кэширования calc_cache_id() calc() check_cache() collect_tags() да нет save_cache() load_cache ()
  • 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. Реализация кэширования 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. VII. Заключение
  • 26. Спасибо за внимание! Дякую за увагу! Thank You! Буду рад ответить на Ваши вопросы!