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

Post on 05-Aug-2015

358 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

Спасибо

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

ensaierwa@gmail.com

ensaier

//fb.com/tryshchenko

top related