Сергей Яковлев "phalcon 2 - стабилизация и...
TRANSCRIPT
![Page 1: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/1.jpg)
Phalcon 2Stabilization and performance
Serghei IakovlevGenesis Technology Partners
github.com/sergeyklay
![Page 2: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/2.jpg)
План доклада
● Знакомьтесь — Phalcon● Важные изменения за последний год
● Что ожидается от версии 2.1
● LTS версия и система релизов
● Как принять участие в разработке
● Поддержка PHP 7
● Развитие Zephir
● В чём мы нуждаемся
![Page 3: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/3.jpg)
Знакомьтесь — Phalcon
![Page 4: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/4.jpg)
Тест производительностиHello World
![Page 5: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/5.jpg)
0
0.5
1
1.5
2
Zend
Symfony
Yii
Laravel
Kohana CI Fu
el
Расход памяти (мб на один запрос)
Phalcon
![Page 6: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/6.jpg)
0
20
40
60
80
Zend
Symfony
Kohana
Число используемых файлов (на запрос)
CI
Phalcon
Yii
Fuel
Laravel
![Page 7: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/7.jpg)
Zend
Kohana
Phalcon
Время на запрос (для всех параллельных запросов)
0.00
0.75
1.50
2.25
3.00
CIYii
Fuel
Symfony
Laravel
![Page 8: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/8.jpg)
Zend
Kohana
Число обработанных запросов в секунду
750
1,500
2,250
3,000
Phalcon
CIYii
Fuel
Symfony
Laravel
![Page 9: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/9.jpg)
Другие тесты?
goo.gl/DOwCLt
![Page 10: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/10.jpg)
Изменения за последний год
![Page 11: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/11.jpg)
2.0.0 — 17 апреля
2.0.1 — 10 мая
2.0.2 — 26 мая
2.0.3 — 10 июня
2.0.4 — 7 июля
2.0.5 — 17 июля
2.0.6 — 21 июля
2.0.7 — 17 августа
2.0.8 — 25 сентября
![Page 12: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/12.jpg)
● Язык высокого уровня
● Динамическая и статическая строгая типизация
● Контроль памяти
● Схож с PHP
![Page 13: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/13.jpg)
// PHP 7public function getAddress() : Address { return $this->address;}// Zephirpublic function getAddress() -> <Address> { return this->address;}
// PHP 7public function hello(string $name) : string { return 'Hello ' . $name;}// Zephirpublic function hello(string name) -> string { return "Hello " . name;}
![Page 14: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/14.jpg)
Что ожидается от версии 2.1
![Page 15: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/15.jpg)
// deprecated // in favor ofPhalcon\Mvc\Model\Validation => Phalcon\Validation
new Customer( [ 'name' => 'Peter', 'status' => 'Active', ]);
// JsonSerializable$customer = Customer::findFirst(1);echo json_encode($customer);
Объединение Validation
Улучшения в моделях
![Page 16: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/16.jpg)
$di->set('service', function () use ($di) { $anotherService = $di->getShared('anotherService'); $anotherService-> ...
});
$di->set('service', function () {
$this->anotherService-> ...});
public function beforeServiceResolve($e, $di, $params){ // ... return new MyClass;}
Улучшена работа с зависимостями
![Page 17: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/17.jpg)
$view->setViewsDir( [ '/var/www/htdocs/blog/modules/backend/views/', '/var/www/htdocs/blog/common/views/', ]
);
$view->setLayoutsDir(
'/var/www/htdocs/common/views/layouts/');
$view->setPartialsDir(
'/var/www/htdocs/common/views/partials/');
Несколько директорий для вьюх
![Page 18: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/18.jpg)
public function loginAction(){ return false; // $this->view->disable();}
public function helloAction(){ return '<h1>Hello world!</h1>';}
public function welcomeAction($name){ return $this->view->render('welcome/index', [ 'name' => $name ]);}
Что можем вернуть из контроллера
![Page 19: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/19.jpg)
$router->add('/short-url', [])->match(function () { $response = $this->getResponse();
return $response->redirect('http://fwdays.com/');});
$router->add('/', [])->match(function () { return '<h1>It works</h1>';});
Переопределяем поведение диспетчера
![Page 20: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/20.jpg)
LTS версия и система релизов
![Page 21: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/21.jpg)
● 1.2.x до 2014-03-17 (не поддерживается)
● 1.3.х до 2015-05-08 (не поддерживается)
● 2.0.х до 2016-04-17
● 2.1.х 2 года с момента выхода
Срок поддержки версий
![Page 22: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/22.jpg)
Система версионирования
Версии нумеруются в формате A.B.CМажорная версия A.BМинорная версия A.B.CОбратная совместимость между A.B.C и A.B.C+1
Периодичность релизов
Мажорные релизы — 6-9 месяцевМинорные релизы — 3-5 недель
![Page 23: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/23.jpg)
Как принять участие в разработке
![Page 24: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/24.jpg)
Vagrant для быстрого старта
● Ubuntu 14.04.3 LTS● Apache 2.4● PHP 5.5● MySQL 5.6● Git 1.9● Memcached 1.4● Beanstalkd 1.9● Composer
● Zephir 0.8● SQLite 2.8● PostgreSQL 9.4● Phalcon● Phalcon Dev Tools● Redis 2.8● MongoDB 2.0
github.com/phalcon/vagrant
![Page 25: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/25.jpg)
4 шага для запуска Vagrant
git clone [email protected]:phalcon/vagrant.git
cd vagrant
vagrant up
vagrant ssh
![Page 26: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/26.jpg)
Основные шаги
● Реализовать новую фичу / исправить баг
● Написать тесты
● Собрать у себя локально
● PR в dev ветку
![Page 27: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/27.jpg)
namespace Utils;class Text{ public static function camelize(string! str) -> string { return str->camelize(); }}
class Text extends \Utils\Text{ public static function camelize($str) { return parent::camelize($str); }}
Тестирование и отчёт о покрытии кода
![Page 28: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/28.jpg)
Поддержка PHP 7
![Page 29: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/29.jpg)
Краткая история
2000 — PHP 4
2004 — PHP 5
2015 — PHP 7
Zend Engine 1
Zend Engine 2
Zend Engine 3
![Page 30: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/30.jpg)
Развитие Zephir
![Page 31: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/31.jpg)
class McallInternal{ internal function fibonacci(long n) -> long { if n == 1 || n == 2 { return 1; } return this->fibonacci(n - 1) + this->fibonacci(n - 2); }
public function callFibonacci(long n) -> long { return this->fibonacci(n); }}
Область видимости internal
![Page 32: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/32.jpg)
class Math{ function fibonacci($n) { if ($n == 1 || $n == 2) { return 1; }
return $this->fibonacci($n - 1) + $this->fibonacci($n - 2); }}
Пример fibonacci на PHP
![Page 33: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/33.jpg)
$t = microtime(true);(new Test\Mcallinternal)->callFibonacci(31);echo 'Zephir: ', microtime(true) - $t, PHP_EOL;
$t = microtime(true);(new Math)->fibonacci(31);echo 'PHP 5.6: ', microtime(true) - $t, PHP_EOL;
Zephir: 0.12126803398132PHP 5.6: 0.613104820251464
Zephir: 0.12285614013672PHP 5.6: 0.55841708183289
4.5/5x 450%/500% improvement
![Page 34: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/34.jpg)
Zephir Core Team
Steffen Butzer
@steffengy
Andres Gutierrez
@andresgutierrez
![Page 35: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/35.jpg)
В чём мы нуждаемся
![Page 36: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/36.jpg)
• Документация• Интернационализация• Тесты• Евангелизм• Примеры приложений• Блог• Поделитесь своим опытом• Социальные сети• Пожертвования / спонсорство
![Page 37: Сергей Яковлев "Phalcon 2 - стабилизация и производительность"](https://reader034.vdocuments.mx/reader034/viewer/2022042600/58a6b3561a28ab661f8b48f1/html5/thumbnails/37.jpg)
Спасибо за внимание
docs.phalconphp.com
forum.phalconphp.com
github.com/phalcon
pledgie.com/campaigns/27405
Сергей ЯковлевGenesis Technology Partners
github.com/sergeyklay
Вопросы?