версии 1.x 3. Обзор популярных разработок 4. Gazeta.ua после перехода на Phalcon 5. Yona CMS, особенности, модули 6. Практические приёмы работы с Phalcon 7. Трудности работы с Phalcon 8. Phalcon 2, Zephir
• Phalcon\Db: добавлена поддержка типов данных DECIMAL, DOUBLE, BOOLEAN, POINT • Phalcon\Forms: добавлен элемент Radio • Phalcon\Logger: добавлен адаптер FirePHP • Phalcon\Tag: - Добавлены пропущенные варианты type для элемента input в соответствии с HTML5 - Добавлен метод setTitleSeparator() - лично по моей просьбе Изменения в Phalcon версии 1.x
• Отработано около 475 багрепортов на github • Исправлено большое количество ошибок, в том числе критических • Исправлено большинство известных утечек памяти • Сделано множество улучшений API • Сделаны различные оптимизации фреймворка на уровне Си • В общем – все стало еще лучше Изменения в Phalcon версии 1.x
Особенности: Управление пакетами Визуальный конструктор страниц Менеджер навигационного меню Управление языками и переводами Популярные разработки на Phalcon
Varnish → Nginx → Полностраничный кеш(APC) → ZF1 А также допиливать ZF1 MVC … Схема работы на Phalcon: Nginx → Phalcon Gazeta.ua после перехода на Phalcon
GHz 4Gb RAM Linux Mint 14 Nadia MATE 64-bit Apache 2.2.22 PHP 5.4.6 • Был исключен фактор запросов к БД • Без Varnish • Без полностраничного APC-кеша Gazeta.ua после перехода на Phalcon
от HTTP-прокси (Varnish); • Отказ от полностраничного APC-кеша; • Данные отказы позволили ускорить написание нового функционала, без привязки к ним; • Рефакторинг всего существующего функционала; • Увеличение скорости отдачи страниц сервером ~ в 4 раза; • Увеличение устойчивости портала при высоких нагрузках ~ в 5 раз; Gazeta.ua после перехода на Phalcon
Имеет удобную модульную структуру. Предназначена для разработки простых сайтов, так и крупных порталов и веб-приложений. Благодаря не сложной конфигурации и простой архитектуре, может быть легко модифицирована под любую задачу. - особенности, модули
базового функционала для любого проекта. На модульной структуре этой CMS уже успешно запущено более 10 проектов, среди которых Gazeta.ua - особенности, модули
namespace; • Каждый модуль может выступать как отдельный независимый компонент. Иметь свои маршруты, хелперы, less, css, js файлы; • Управление языками (в неограниченном количестве) и переводами прямо из админки; • AJAX-переходы по сайту со сменой URL в браузере из коробки. Без ущерба SEO; - особенности, модули
SEO-модуль; • Простота, интуитивная понятность админ. управления в модулях. Без сложностей и «переоптимизаций»; • Интерфейс админки построен на Semantic UI; • Стили интерфейса построены на LESS • Автоматическая минификация и сборка в единые assets-файлы - особенности, модули
по заданным параметрам; • Схема директорий для хранения файлов рассчитана таким образом, что в одной папке не может быть более чем 1000 файлов; • Нарезанные изображения кешируются в виде JPEG-файлов; • Система защиты от параллельной генерации кеша определенного изображения (lock/unlock); • Используется компонент Phalcon\Image - особенности, модули
\Image\Storage(array( ‘id’ => 256, // ID объекта в БД, например publication ‘type’ => ‘publication’, // тип ‘width’ => ‘300’ // ширина изображения )); // рендеринг HTML-тега изображения <img src=“***” alt=“***”> echo $imageStorage->imageHtml(); // Относительный путь к кешированному изображению шириной 300px $cached_src = $imageStorage->cachedRelPath(); // Абсолютный путь к оригиналу изображения $original_src = $imageStorage->originalAbsPath();
• Полноценный конфигурационный модуль для CMS; • Кодогенерация прямо из админки: модулей, CRUD; • Миграции БД; • Управление подключаемыми модулями; • Создание набора модулей для интернет-магазина; • Написание полноценной документации на русском и английском языках; • Покритие тестами; - особенности, модули
/ Helper.php class Helper extends \Phalcon\Mvc\User\Component { public function translate($string, $placeholders = null) { if (!$this->translate) { $this->translate = $this->getDi()->get('translate'); } return $this->translate->query($string, $placeholders); } // Сюда можно добавить любые другие необходимые вам методы } Практические приёмы работы с Phalcon
Controller $this->helper->translate('Привет мир!'); Доступ через DI-контейнер $helper = $this->getDi()->get('helper'); $helper->translate('Привет мир!'); Практические приёмы работы с Phalcon
метод init() - это объект \Phalcon\Mvc\Router Вы можете использовать любые инициализации из документации http://docs.phalconphp.com/en/latest/api/Phalcon_Mvc_Ro uter.html … а также методы addPost(), addPut(), addDelete() … Т.е. строить удобные модульные RESTful приложения Практические приёмы работы с Phalcon
утечки памяти при работе с определенными функциями. • В ORM работа с Relations влечет за собой дополнительные запросы, что не совсем удобно. • Слой View по сравнению с другими популярными фреймворками достаточно бедный в своих возможностях. Радует то, что разработчики обещают все исправить и сделать фреймворк лучше Трудности работы с Phalcon
язык высокого уровня, предназначен для облегчения создания и сопровождения расширений для PHP с акцентом на безопасность памяти. • Еще более производительный, чем первая версия • Обратная совместимость с Phalcon 1.3.x • Все тесты мигрированы на Codeception • Вносить вклад в развитие фреймворка становиться легче Phalcon 2
100% проходит тесты Phalcon 1.* • Благодаря «Zephir» новое ядро более полно проверяет соответствие классов и типов, вызывая более подробные сообщения о несоответствиях. • Язык «Zephir» так же более точно и полно выдаёт информацию об исключениях и их параметрах. • Phalcon 2 вообще более лучше работает с разными типами ошибок и исключениями. • Новое ядро использует оптимизации из PHP 5.6, что, непременно, благоприятно сказывается на производительности. Если вы используете версию PHP ниже, все будет работать, но без этих оптимизаций. Phalcon 2
занимает собственную нишу; • Phalcon постоянно избавляется от своих «детских болезней» и становиться лучше; • С разработкой Phalcon 2 и Zephir вносить вклад в развитие фреймворка становиться намного легче; • Zephir позволяет нам заглянуть «под капод» фреймворка, более детально изучить принцип работы; • Делать хорошие, быстрые production приложения на Phalcon возможно и даже нужно! Выводы