Александр Трищенко: phalcon framework
TRANSCRIPT
Phalcon frameworkA 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.Различного рода парсеры
Почему это удобно?
• Мало файлов, меньше кода.• Удобно подключать в качестве микросервиса к
другому проекту• Роутим запрос параметром метода в котором описана
логика.• Возможность использования коллекций
Ложка дегтя
• Мало файлов, куча срача. (обратная сторона плюса)• Неудобно поддерживать (следствие)
Пример
Phalcon\Mvc\Micro\Collection
Views
VOLT
Jinja
http://jinja.pocoo.org/
Вьюха в Jinja
Вьюха в VOLT
Что есть Volt
• Компилируется в PHP
• {{ отрисовка }} и {% операции %}
• Фильтры
• Проверки
• Макросы
• Экранирование
• Партиционирование
• Автоматическое экранирование
Макросы
Партиции
Angular
https://github.com/niden/phalcon-angular-harryhogfootball
Шаблонизатор Jadehttp://phalconist.com/kylekatarnls/jade-phalcon
XSLThttp://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 компонент)• Инструменты миграции (\Phalcon\Mvc\Model\
Migration)• 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.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
Ещё полезностиОписание работы парсера аннотацийhttps://docs.phalconphp.com/ru/latest/reference/annotations.htmlPhalcon и Codeceptionhttp://codeception.com/docs/modules/Phalcon1Unit testinghttp://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