Phalcon framework
A full-stack PHP framework delivered as a C-extension
С расширение как фреймворк
Плюсы:
1.Быстро
2.Дешево
3.Чисто
Минусы
1.Одна версия фреймворка на все
приложения
2.Отсутствие поддержки на
shared хостинге
Производительность
Еще производительность
И ещё немного
Популярность
Phalcon ORM/ODM
• Обычный набор CRUD операций
• Удобный JOIN
• Table mapping. Column mapping.
• Phalcon Query Language (PHQL)
• Cache
Валидации
Phalcon Query Language
• Связанные (bound) параметры — часть языка PHQL, помогающая вам
обезопасить наш код
• PHQL разрешает выполнить только один SQL оператор за вызов,
предотвращая инъекции
• PHQL игнорирует любые SQL-комментарии, часто использующиеся в
SQL-инъекциях
• PHQL разрешает выполнять только операторы работы с данными,
избегая изменения или удаления таблиц/баз данных по ошибке или
извне без авторизации
• PHQL реализует высокоуровневую абстракцию, позволяющую вам
оперировать моделями как таблицами и атрибутами класса — как
полями таблицы.
Добавим гибкости с PHQL
Events manager
• Возможность добавления слушателей
для любых методов
• События баз данных
• Сборщик ответов
Создание EM
События баз
События маршрутизатора
Phalcon ODM
Подключение
Использование
Dependency Injection
Передаем зависимость
Используем её
Phalcon/MVC/Micro
Когда это удобно:
1.Легко и просто создать быстрый API.
2.Создание микросервисов.
3.Быстро реализовать прототип
4.Различного рода парсеры
Почему это удобно?
• Мало файлов, меньше кода.
• Удобно подключать в качестве микросервиса к
другому проекту
• Роутим запрос параметром метода в котором
описана логика.
• Возможность использования коллекций
Ложка дегтя
• Мало файлов, куча срача. (обратная сторона плюса)
• Неудобно поддерживать (следствие)
Пример
PhalconMvcMicroCollection
Views
VOLT
Jinja
http://jinja.pocoo.org/
Вьюха в Jinja
Вьюха в VOLT
Что есть Volt
• Компилируется в PHP
• {{ отрисовка }} и {% операции %}
• Фильтры
• Проверки
• Макросы
• Экранирование
• Партиционирование
• Автоматическое экранирование
Макросы
Партиции
Angular
https://github.com/niden/phalcon-angular-
harryhogfootball
Шаблонизатор Jade
http://phalconist.com/kylekatarnls/jade-phalcon
XSLT
http://phalconist.com/racztiborzoltan/phalcon-xslt-
view-engine
Плюшки от сообщества
Слайд для лирики, что не привлекает
внимания
Security
Security
• Cross-Site Request Forgery (CSRF)
protection
• Password Hashing
• Contextual Escaping
• Шифрование Cookie
CSRF
(Межсайтовая подделка запроса)
Защита от CSRF атак средствами
Phalcon
Хеширование
Старая добрая капча
• https://github.com/pavlosadovyi/phalcon-
recaptcha
Sanitizing
Escaping
• Экранирование HTML
• Экранирование HTML-атрибутов
• Экранирование ссылок
• Экранирование CSS
• Экранирование Javascript
Cache
Backend adapters
Frontend adapters
Memcached
Простота реализации
• В приведенном выше примере мы
использовали кэш в памяти. Он
полезен в качестве первого уровня
кэша. Как только у нас есть кэш в
памяти, мы можем реализовать слой
кэша второго уровня с помощью APC /
XCache или базы данных NoSQL
Парсер аннотаций
Добавим аннотации
Репликация
Sharding
Vertical sharding
Horizontal Sharding
Queueing
Beanstalkd
Тестирование приложения
• Предусмотрена интеграция с PHPUnit.
• Модуль интеграции с Codeception
• Предустановленный профайлер и логгер
PHPUnit
https://docs.phalconphp.com/en/latest/reference/unit-testing.html
Немного по тестам
http://blog.stevensanderson.com/2009/08/24/writing-great-unit-tests-best-and-worst-practises/
Что нравится
• Возможность задать 2 разных baseUrl, один из
которых будет использоваться для статических
ресурсов
• Изоляция данных сессии внутри приложения
• Быстрые аннотации написанные на С
• Обертка для GD библиотеки (Image компонент)
• Инструменты миграции
(PhalconMvcModelMigration)
• Phalcon Developer Tools
А что не нравится
- Примеры паршивые:
- sha1($pass) без соли в INVO
- session не проброшен в модели
- $this->view->modelName
- ACL хранит всю инфу в сессии пользователя. А сессия
не убивается при выходе. А права доступа на старой
сессии не обрабатыватся. Приехали.
- Работа с формами
- Неполное покрытие API фреймворка документацией
Полезные ссылки
Производительность-сравняшка
http://www.sitepoint.com/phalconphp-yet-another-php-framework/
Докумешнташка
http://docs.phalconphp.com/
Переучиваемся на монго
http://php.net/manual/en/mongo.sqltomongo.php
Beanstalkd
https://www.igvita.com/2010/05/20/scalable-work-queues-with-beanstalk/
Нескучная CMS на phalcon 1.3
http://yonacms.com/
Сборник вкусняшек для Phalcon
http://phalconist.com
Горизонтальный шардинг
https://msdn.microsoft.com/en-us/library/dn589795.aspx
Memcache как кэширующий слой для MySQL DB
https://dev.mysql.com/doc/refman/5.0/en/ha-memcached-mysql-frontend.html
Ещё полезности
Описание работы парсера аннотаций
https://docs.phalconphp.com/ru/latest/reference/annotations.html
Phalcon и Codeception
http://codeception.com/docs/modules/Phalcon1
Unit testing
http://codeception.com/docs/modules/Phalcon1
В презентации юзал графику
отсюда:
• 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
Спасибо
Александр Трищенко
ensaierwa@gmail.com
ensaier
//fb.com/tryshchenko

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