Александр Трищенко: phalcon framework

68
Phalcon framework A full-stack PHP framework delivered as a C- extension

Upload: oleg-poludnenko

Post on 05-Aug-2015

358 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Александр Трищенко: Phalcon framework

Phalcon frameworkA full-stack PHP framework delivered as a C-extension

Page 2: Александр Трищенко: Phalcon framework

С расширение как фреймворк

Плюсы:1.Быстро2.Дешево3.Чисто

Минусы1.Одна версия фреймворка на все приложения 2.Отсутствие поддержки на shared хостинге

Page 3: Александр Трищенко: Phalcon framework

Производительность

Page 4: Александр Трищенко: Phalcon framework

Еще производительность

Page 5: Александр Трищенко: Phalcon framework

И ещё немного

Page 6: Александр Трищенко: Phalcon framework

Популярность

Page 7: Александр Трищенко: Phalcon framework
Page 8: Александр Трищенко: Phalcon framework

Phalcon ORM/ODM• Обычный набор CRUD операций• Удобный JOIN• Table mapping. Column mapping.• Phalcon Query Language (PHQL)• Cache

Page 9: Александр Трищенко: Phalcon framework

Валидации

Page 10: Александр Трищенко: Phalcon framework

Phalcon Query Language• Связанные (bound) параметры — часть языка PHQL, помогающая вам

обезопасить наш код• PHQL разрешает выполнить только один SQL оператор за вызов,

предотвращая инъекции• PHQL игнорирует любые SQL-комментарии, часто использующиеся в

SQL-инъекциях• PHQL разрешает выполнять только операторы работы с данными,

избегая изменения или удаления таблиц/баз данных по ошибке или извне без авторизации

• PHQL реализует высокоуровневую абстракцию, позволяющую вам оперировать моделями как таблицами и атрибутами класса — как полями таблицы.

Page 11: Александр Трищенко: Phalcon framework

Добавим гибкости с PHQL

Page 12: Александр Трищенко: Phalcon framework

Events manager

• Возможность добавления слушателей для любых методов

• События баз данных• Сборщик ответов

Page 13: Александр Трищенко: Phalcon framework

Создание EM

Page 14: Александр Трищенко: Phalcon framework

События баз

Page 15: Александр Трищенко: Phalcon framework

События маршрутизатора

Page 16: Александр Трищенко: Phalcon framework

Phalcon ODM

Page 17: Александр Трищенко: Phalcon framework

Подключение

Page 18: Александр Трищенко: Phalcon framework

Использование

Page 19: Александр Трищенко: Phalcon framework

Dependency Injection

Page 20: Александр Трищенко: Phalcon framework

Передаем зависимость

Используем её

Page 21: Александр Трищенко: Phalcon framework

Phalcon/MVC/Micro

Когда это удобно:1.Легко и просто создать быстрый API.2.Создание микросервисов.3.Быстро реализовать прототип4.Различного рода парсеры

Page 22: Александр Трищенко: Phalcon framework

Почему это удобно?

• Мало файлов, меньше кода.• Удобно подключать в качестве микросервиса к

другому проекту• Роутим запрос параметром метода в котором описана

логика.• Возможность использования коллекций

Page 23: Александр Трищенко: Phalcon framework

Ложка дегтя

• Мало файлов, куча срача. (обратная сторона плюса)• Неудобно поддерживать (следствие)

Page 24: Александр Трищенко: Phalcon framework

Пример

Page 25: Александр Трищенко: Phalcon framework

Phalcon\Mvc\Micro\Collection

Page 26: Александр Трищенко: Phalcon framework

Views

Page 27: Александр Трищенко: Phalcon framework

VOLT

Page 28: Александр Трищенко: Phalcon framework

Jinja

http://jinja.pocoo.org/

Page 29: Александр Трищенко: Phalcon framework

Вьюха в Jinja

Page 30: Александр Трищенко: Phalcon framework

Вьюха в VOLT

Page 31: Александр Трищенко: Phalcon framework

Что есть Volt

• Компилируется в PHP

• {{ отрисовка }} и {% операции %}

• Фильтры

• Проверки

• Макросы

• Экранирование

• Партиционирование

• Автоматическое экранирование

Page 32: Александр Трищенко: Phalcon framework

Макросы

Page 33: Александр Трищенко: Phalcon framework

Партиции

Page 34: Александр Трищенко: Phalcon framework

Angular

https://github.com/niden/phalcon-angular-harryhogfootball

Page 35: Александр Трищенко: Phalcon framework

Шаблонизатор Jadehttp://phalconist.com/kylekatarnls/jade-phalcon

XSLThttp://phalconist.com/racztiborzoltan/phalcon-xslt-view-engine

Плюшки от сообщества

Page 36: Александр Трищенко: Phalcon framework

Слайд для лирики, что не привлекает внимания

Page 37: Александр Трищенко: Phalcon framework

Security

Page 38: Александр Трищенко: Phalcon framework

Security

• Cross-Site Request Forgery (CSRF) protection

• Password Hashing• Contextual Escaping• Шифрование Cookie

Page 39: Александр Трищенко: Phalcon framework

CSRF (Межсайтовая подделка запроса)

Page 40: Александр Трищенко: Phalcon framework

Защита от CSRF атак средствами Phalcon

Page 41: Александр Трищенко: Phalcon framework

Хеширование

Page 42: Александр Трищенко: Phalcon framework

Старая добрая капча

• https://github.com/pavlosadovyi/phalcon-recaptcha

Page 43: Александр Трищенко: Phalcon framework

Sanitizing

Page 44: Александр Трищенко: Phalcon framework

Escaping

• Экранирование HTML• Экранирование HTML-атрибутов• Экранирование ссылок• Экранирование CSS• Экранирование Javascript

Page 45: Александр Трищенко: Phalcon framework

Cache

Page 46: Александр Трищенко: Phalcon framework

Backend adapters

Page 47: Александр Трищенко: Phalcon framework

Frontend adapters

Page 48: Александр Трищенко: Phalcon framework

Memcached

Page 49: Александр Трищенко: Phalcon framework

Простота реализации

Page 50: Александр Трищенко: Phalcon framework

• В приведенном выше примере мы использовали кэш в памяти. Он полезен в качестве первого уровня кэша. Как только у нас есть кэш в памяти, мы можем реализовать слой кэша второго уровня с помощью APC / XCache или базы данных NoSQL

Page 51: Александр Трищенко: Phalcon framework

Парсер аннотаций

Page 52: Александр Трищенко: Phalcon framework

Добавим аннотации

Page 53: Александр Трищенко: Phalcon framework

Репликация

Page 54: Александр Трищенко: Phalcon framework

Sharding

Page 55: Александр Трищенко: Phalcon framework

Vertical sharding

Page 56: Александр Трищенко: Phalcon framework

Horizontal Sharding

Page 57: Александр Трищенко: Phalcon framework
Page 58: Александр Трищенко: Phalcon framework

Queueing

Page 59: Александр Трищенко: Phalcon framework

Beanstalkd

Page 60: Александр Трищенко: Phalcon framework

Тестирование приложения

• Предусмотрена интеграция с PHPUnit.• Модуль интеграции с Codeception • Предустановленный профайлер и логгер

Page 61: Александр Трищенко: Phalcon framework

PHPUnit

https://docs.phalconphp.com/en/latest/reference/unit-testing.html

Page 62: Александр Трищенко: Phalcon framework

Немного по тестам

http://blog.stevensanderson.com/2009/08/24/writing-great-unit-tests-best-and-worst-practises/

Page 63: Александр Трищенко: Phalcon framework

Что нравится

• Возможность задать 2 разных baseUrl, один из которых будет использоваться для статических ресурсов

• Изоляция данных сессии внутри приложения• Быстрые аннотации написанные на С• Обертка для GD библиотеки (Image компонент)• Инструменты миграции (\Phalcon\Mvc\Model\

Migration)• Phalcon Developer Tools

Page 64: Александр Трищенко: Phalcon framework

А что не нравится- Примеры паршивые:

- sha1($pass) без соли в INVO

- session не проброшен в модели

- $this->view->modelName

- ACL хранит всю инфу в сессии пользователя. А сессия не убивается при выходе. А права доступа на старой сессии не обрабатыватся. Приехали.

- Работа с формами- Неполное покрытие API фреймворка документацией

Page 65: Александр Трищенко: Phalcon framework

Полезные ссылкиПроизводительность-сравняшкаhttp://www.sitepoint.com/phalconphp-yet-another-php-framework/Докумешнташкаhttp://docs.phalconphp.com/Переучиваемся на монгоhttp://php.net/manual/en/mongo.sqltomongo.phpBeanstalkdhttps://www.igvita.com/2010/05/20/scalable-work-queues-with-beanstalk/Нескучная CMS на phalcon 1.3http://yonacms.com/Сборник вкусняшек для Phalconhttp://phalconist.comГоризонтальный шардингhttps://msdn.microsoft.com/en-us/library/dn589795.aspxMemcache как кэширующий слой для MySQL DBhttps://dev.mysql.com/doc/refman/5.0/en/ha-memcached-mysql-frontend.html

Page 66: Александр Трищенко: Phalcon framework

Ещё полезностиОписание работы парсера аннотацийhttps://docs.phalconphp.com/ru/latest/reference/annotations.htmlPhalcon и Codeceptionhttp://codeception.com/docs/modules/Phalcon1Unit testinghttp://codeception.com/docs/modules/Phalcon1

Page 67: Александр Трищенко: Phalcon framework

В презентации юзал графику отсюда:

• http://vaniiina.deviantart.com/art/Nyan-Cat-y-Rainbow-Dash-385157141

• https://www.igvita.com/2010/05/20/scalable-work-queues-with-beanstalk/

• http://ruhighload.com/• https://msdn.microsoft.com/en-us/library/dn589795.aspx• https://

dev.mysql.com/doc/refman/5.0/en/ha-memcached-mysql-frontend.html

• http://ismetakcakaya.com/memcache-nedir-ve-phpde-memcache-kullanimi.html

Page 68: Александр Трищенко: Phalcon framework

Спасибо

Александр Трищенко

[email protected]

ensaier

//fb.com/tryshchenko