Phalcon. Что нового?
-
Upload
oleksandr-torosh -
Category
Software
-
view
711 -
download
8
Transcript of Phalcon. Что нового?
![Page 2: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/2.jpg)
Годом ранее…
PHP Frameworks Day 12 октября 2013
Phalcon - cамый быстрый PHP Framework.
Разработка highload проекта
http://frameworksdays.com/event/php-frameworks-
day-2013/review/Phalcon-PHP-Framework
![Page 3: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/3.jpg)
План доклада
1. Рост популярности Phalcon
2. Изменения в Phalcon версии 1.x
3. Обзор популярных разработок
4. Gazeta.ua после перехода на Phalcon
5. Yona CMS, особенности, модули
6. Практические приёмы работы с Phalcon
7. Трудности работы с Phalcon
8. Phalcon 2, Zephir
![Page 4: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/4.jpg)
Считаем Stars на Github у популярных фреймворков
Рост популярности Phalcon
![Page 5: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/5.jpg)
Поддержка хостингами и облачными сервисами
Рост популярности Phalcon
![Page 6: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/6.jpg)
Built with Phalcon – http://builtwith.phalconphp.com
Рост популярности Phalcon
![Page 7: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/7.jpg)
Компании, студии, программисты, фрилансеры, которые начали использовать Phalcon
• http://lezgro.com/
• http://wezoom.net/
• http://www.kiwisoft.co.uk/
• http://www.robertbojor.com/
• https://jream.com/
Рост популярности Phalcon
![Page 8: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/8.jpg)
Фан-сайты по Phalcon
Группа VK –
https://vk.com/phalconphp
Постоянные новости и
анонсы из мира Phalcon.
Обзор свежих разработок.
Обсуждения.
Рост популярности Phalcon
![Page 9: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/9.jpg)
Фан-сайты по Phalcon
Phalconist – каталог ресурсов для
фреймворка Phalcon.
http://phalconist.com/
Количество размещенных проектов: 167
Рост популярности Phalcon
![Page 10: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/10.jpg)
Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4
• Новый компонент Phalcon\Image
• Phalcon\Config: добавлены адаптеры Json, Yaml
• Phalcon\Translate: добавлен адаптер Gettext
• Phalcon\Session: добавлены адаптеры Memcache,
Libemcached
• Phalcon\Cache:
- Поддержка Libmemcached и APCu 4.0.2+
- Добавлены методы increment(), decrement(), flush()
Изменения в Phalcon версии 1.x
![Page 11: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/11.jpg)
Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4
• Phalcon\Db: добавлена поддержка типов данных
DECIMAL, DOUBLE, BOOLEAN, POINT
• Phalcon\Forms: добавлен элемент Radio
• Phalcon\Logger: добавлен адаптер FirePHP
• Phalcon\Tag:
- Добавлены пропущенные варианты type для
элемента input в соответствии с HTML5
- Добавлен метод setTitleSeparator() - лично по моей
просьбе
Изменения в Phalcon версии 1.x
![Page 12: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/12.jpg)
Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4
• Отработано около 475 багрепортов на github
• Исправлено большое количество ошибок, в том числе
критических
• Исправлено большинство известных утечек памяти
• Сделано множество улучшений API
• Сделаны различные оптимизации фреймворка на
уровне Си
• В общем – все стало еще лучше
Изменения в Phalcon версии 1.x
![Page 13: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/13.jpg)
Phalcon Eye
CMS написана на Phalcon http://phalconeye.com/
Автор: Иван Воронцов
Особенности:
Управление пакетами
Визуальный конструктор страниц
Менеджер навигационного меню
Управление языками и переводами
Популярные разработки на Phalcon
![Page 14: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/14.jpg)
Phalcon Eye – Pages
Популярные разработки на Phalcon
![Page 15: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/15.jpg)
Phalcon Eye – Pages
Популярные разработки на Phalcon
![Page 16: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/16.jpg)
Phosphorum – движок форума на
Phalcon. Используется официальным
комьюнити Phalcon фреймворка.
https://github.com/phalcon/forum
http://forum.phalconphp.com/
Популярные разработки на Phalcon
![Page 17: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/17.jpg)
Vegas-CMF – открытая система
управления контентом на Phalcon.
Разбита на отдельные составляющие
и модули
http://vegas-cmf.github.io/
https://github.com/vegas-cmf
Популярные разработки на Phalcon
![Page 18: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/18.jpg)
Схема работы на ZF1:
Для увеличения производительности, приходилось использовать HTTP-прокси:
Varnish → Nginx → Полностраничный кеш(APC) → ZF1
А также допиливать ZF1 MVC …
Схема работы на Phalcon:
Nginx → Phalcon
Gazeta.ua после перехода на Phalcon
![Page 19: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/19.jpg)
Тестирование PHP-слоя
Проводилось на локальной машине: Core 2 Duo 2.04 GHz 4Gb RAM Linux Mint 14 Nadia MATE 64-bit Apache 2.2.22 PHP 5.4.6 • Был исключен фактор запросов к БД • Без Varnish • Без полностраничного APC-кеша
Gazeta.ua после перехода на Phalcon
![Page 20: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/20.jpg)
Gazeta.ua после перехода на Phalcon
Данные по Xdebug (php-слой, без БД)
gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon
мс 834 81 27
0
100
200
300
400
500
600
700
800
900
Ско
ро
сть
загр
узки
, мс
![Page 21: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/21.jpg)
Gazeta.ua после перехода на Phalcon
Firebug, ожидание ответа сервера (php-слой, без БД)
gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon
мс 210 50 20
0
50
100
150
200
250
Ско
ро
сть
загр
узки
, мс
![Page 22: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/22.jpg)
Gazeta.ua после перехода на Phalcon
ab -c 1000 -n 10 (php-слой, без БД)
gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon
req/s 10,27 52,45 108,01
0,00
20,00
40,00
60,00
80,00
100,00
120,00
Ко
л-в
о з
апр
осо
в в
секу
нд
у
![Page 23: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/23.jpg)
Были ли преимущества от перехода? Однозначно ДА!
Преимущества:
• Отказ от HTTP-прокси (Varnish);
• Отказ от полностраничного APC-кеша;
• Данные отказы позволили ускорить написание нового функционала, без привязки к ним;
• Рефакторинг всего существующего функционала;
• Увеличение скорости отдачи страниц сервером ~ в 4 раза;
• Увеличение устойчивости портала при высоких нагрузках ~ в 5 раз;
Gazeta.ua после перехода на Phalcon
![Page 24: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/24.jpg)
Yona CMS
http://yonacms.com/
Автор: Александр Торош
CMS/CMF система на Phalcon. Имеет удобную
модульную структуру. Предназначена для
разработки простых сайтов, так и крупных порталов
и веб-приложений.
Благодаря не сложной конфигурации и простой
архитектуре, может быть легко модифицирована
под любую задачу.
- особенности, модули
![Page 25: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/25.jpg)
Yona CMS позволяет значительно экономить
время в стартовом развертывании необходимого
базового функционала для любого проекта.
На модульной структуре этой CMS уже успешно
запущено более 10 проектов, среди которых
Gazeta.ua
- особенности, модули
![Page 26: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/26.jpg)
Особенности:
• Модульная структура с удобной иерархией, которая
основана на namespace;
• Каждый модуль может выступать как отдельный
независимый компонент. Иметь свои маршруты,
хелперы, less, css, js файлы;
• Управление языками (в неограниченном количестве)
и переводами прямо из админки;
• AJAX-переходы по сайту со сменой URL в браузере
из коробки. Без ущерба SEO;
- особенности, модули
![Page 27: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/27.jpg)
Особенности:
• Модуль хранения и нарезки изображений Image;
• Гибкий SEO-модуль;
• Простота, интуитивная понятность админ.
управления в модулях. Без сложностей и
«переоптимизаций»;
• Интерфейс админки построен на Semantic UI;
• Стили интерфейса построены на LESS
• Автоматическая минификация и сборка в единые
assets-файлы
- особенности, модули
![Page 28: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/28.jpg)
Перечень готовых модулей:
• CMS – конфигурация;
• Admin – авторизация и админпанель;
• FileManager – файловый менеджер;
• Image – хранилище изображений;
• Page – статические страницы;
• Publication – динамические публикации (новости,
статьи, блог - можно создавать новые типы);
• SEO – модификация title, meta-тегов для любой
страницы веб-приложения;
• Slider – настраиваемые «слайдеры»;
• Widget – статические HTML виджеты;
- особенности, модули
![Page 29: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/29.jpg)
Модульная структура
Общий вид проекта
- особенности, модули
![Page 30: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/30.jpg)
Модульная структура
Директория приложения app
- особенности, модули
![Page 31: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/31.jpg)
Модульная структура
Конфигурационные файлы
- особенности, модули
![Page 32: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/32.jpg)
Модульная структура
Модули приложения
- особенности, модули
![Page 33: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/33.jpg)
Модульная структура
Структура модуля и его шаблоны View
- особенности, модули
![Page 34: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/34.jpg)
Модуль Image, особенности:
• Позволяет хранить изображения и нарезать их по
заданным параметрам;
• Схема директорий для хранения файлов рассчитана
таким образом, что в одной папке не может быть
более чем 1000 файлов;
• Нарезанные изображения кешируются в виде
JPEG-файлов;
• Система защиты от параллельной генерации кеша
определенного изображения (lock/unlock);
• Используется компонент Phalcon\Image
- особенности, модули
![Page 35: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/35.jpg)
Модуль Image, пример использования:
- особенности, модули
$imageStorage = new \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();
![Page 36: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/36.jpg)
Планы на ближайшее будущее:
• Простая инсталяция и развертывание проекта;
• Полноценный конфигурационный модуль для CMS;
• Кодогенерация прямо из админки: модулей, CRUD;
• Миграции БД;
• Управление подключаемыми модулями;
• Создание набора модулей для интернет-магазина;
• Написание полноценной документации на русском и
английском языках;
• Покритие тестами;
- особенности, модули
![Page 37: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/37.jpg)
Helper
yona-cms / app / Bootstrap.php
$di->set('helper', new \Application\Mvc\Helper());
Практические приёмы работы с Phalcon
![Page 38: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/38.jpg)
Helper
yona-cms / app / modules / Application / Mvc / 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
![Page 39: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/39.jpg)
Helper. Как этим пользоваться?
Шаблон volt
{{ helper.translate('Привет мир!') }}
Controller
$this->helper->translate('Привет мир!');
Доступ через DI-контейнер
$helper = $this->getDi()->get('helper');
$helper->translate('Привет мир!');
Практические приёмы работы с Phalcon
![Page 40: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/40.jpg)
Routes для каждого модуля отдельно yona-cms / app / Bootstrap.php
$router = new \Application\Mvc\Router\DefaultRouter();
$router->setDi($di);
foreach ($application->getModules() as $module) {
$routesClassName = str_replace('Module', 'Routes',
$module['className']);
if (class_exists($routesClassName)) {
$routesClass = new $routesClassName();
$router = $routesClass->init($router);
}
}
$di->set('router', $router);
Практические приёмы работы с Phalcon
![Page 41: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/41.jpg)
Routes для каждого модуля отдельно yona-cms / app / modules / Page / Routes.php
class Routes
{
public function init(\Phalcon\Mvc\Router $router)
{
$router->add('/{slug:[a-z0-9_-]+}.html', array(
'module' => 'page',
'controller' => 'index',
'action' => 'index'
))->setName('page');
return $router;
}
}
Практические приёмы работы с Phalcon
![Page 42: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/42.jpg)
Routes для каждого модуля отдельно
Параметр $route, что передается в метод init() - это
объект \Phalcon\Mvc\Router
Вы можете использовать любые инициализации из
документации
http://docs.phalconphp.com/en/latest/api/Phalcon_Mvc_Ro
uter.html
… а также методы addPost(), addPut(), addDelete() …
Т.е. строить удобные модульные RESTful приложения
Практические приёмы работы с Phalcon
![Page 43: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/43.jpg)
• На разных аппаратных архитектурах могут возникать
segfault ошибки и утечки памяти при работе с
определенными функциями.
• В ORM работа с Relations влечет за собой
дополнительные запросы, что не совсем удобно.
• Слой View по сравнению с другими популярными
фреймворками достаточно бедный в своих
возможностях.
Радует то, что разработчики обещают все исправить
и сделать фреймворк лучше
Трудности работы с Phalcon
![Page 44: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/44.jpg)
Особенности второй версии Phalcon:
• Написан на Zephir. Это компилируемый язык высокого уровня, предназначен для облегчения создания и сопровождения расширений для PHP с акцентом на безопасность памяти.
• Еще более производительный, чем первая версия
• Обратная совместимость с Phalcon 1.3.x
• Все тесты мигрированы на Codeception
• Вносить вклад в развитие фреймворка становиться легче
Phalcon 2
![Page 45: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/45.jpg)
Уже доступна Beta 3. Изменения:
• Phalcon 2.0 теперь на 100% проходит тесты Phalcon 1.*
• Благодаря «Zephir» новое ядро более полно проверяет соответствие классов и типов, вызывая более подробные сообщения о несоответствиях.
• Язык «Zephir» так же более точно и полно выдаёт информацию об исключениях и их параметрах.
• Phalcon 2 вообще более лучше работает с разными типами ошибок и исключениями.
• Новое ядро использует оптимизации из PHP 5.6, что, непременно, благоприятно сказывается на производительности. Если вы используете версию PHP ниже, все будет работать, но без этих оптимизаций.
Phalcon 2
![Page 46: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/46.jpg)
• Phalcon стремительно набирает популярность в мире веб-разработки и уверенно занимает собственную нишу;
• Phalcon постоянно избавляется от своих «детских болезней» и становиться лучше;
• С разработкой Phalcon 2 и Zephir вносить вклад в развитие фреймворка становиться намного легче;
• Zephir позволяет нам заглянуть «под капод» фреймворка, более детально изучить принцип работы;
• Делать хорошие, быстрые production приложения на Phalcon возможно и даже нужно!
Выводы
![Page 47: Phalcon. Что нового?](https://reader034.fdocuments.net/reader034/viewer/2022042518/55a78d2b1a28ab356e8b48a4/html5/thumbnails/47.jpg)
Спасибо за внимание!
Александр Торош Веб-студия «WeZoom»
wezoom.net
Тел: (044) 221-65-78 (096) 989-08-28 (063) 787-22-36