Важные изменения в Phalcon за последний год
Краткое описание важных изменений и дополнений, которые сделали Phalcon интересным и более стабильным за последний год.
Что ожидается от версии 2.1
О концептуальных изменениях в версии 2.1
LTS версия и система релизов
О выходе LTS версии, сроках её поддержки, а так же намеченной системе релизов Phalcon и сроках их поддержки.
Как Zephir увеличивает численность команды и общую стабильность проекта
О том, что команда Zephir расширяется профессиональными разработчиками на языке Си, делая язык стабильнее и развивая его быстрее. О заморозке основной ветки разработки.
Как принять участие в разработке Phalcon
О том как писать на языке программирования Zephir, тестировать локально свои наработки и правильно отправлять пул реквесты или баг репорты чтоб они были рассмотрены в ближайшее время.
Поддержка PHP7
О том, на какой стадии поддержка PHP7 реализована в Phalcon. Как Phalcon будет работать в PHP7. Будет ли он быстрее чем нативный код для PHP7. О том, какую версию рекомендуется использовать сейчас.
В чём мы нуждаемся
О том, что нам нужны не только программисты — описание того, как можно помогать проекту развиваться, даже не будучи профессиональным программистом.
2. План доклада
●
Знакомьтесь — Phalcon
●
Важные изменения за последний год
●
Что ожидается от версии 2.1
●
LTS версия и система релизов
●
Как принять участие в разработке
●
Поддержка PHP 7
●
Развитие Zephir
●
В чём мы нуждаемся
11. 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 сентября
12. ● Язык высокого уровня
● Динамическая и статическая строгая типизация
● Контроль памяти
● Схож с PHP
13. // PHP 7
public function getAddress() : Address {
return $this->address;
}
// Zephir
public function getAddress() -> <Address> {
return this->address;
}
// PHP 7
public function hello(string $name) : string {
return 'Hello ' . $name;
}
// Zephir
public function hello(string name) -> string {
return "Hello " . name;
}
15. // deprecated // in favor of
PhalconMvcModelValidation => PhalconValidation
new Customer(
[
'name' => 'Peter',
'status' => 'Active',
]
);
// JsonSerializable
$customer = Customer::findFirst(1);
echo json_encode($customer);
Объединение Validation
Улучшения в моделях
16. $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;
}
Улучшена работа с зависимостями
18. 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
]);
}
Что можем вернуть из контроллера
21. ● 1.2.x до 2014-03-17 (не поддерживается)
● 1.3.х до 2015-05-08 (не поддерживается)
● 2.0.х до 2016-04-17
● 2.1.х 2 года с момента выхода
Срок поддержки версий
22. Система версионирования
Версии нумеруются в формате A.B.C
Мажорная версия A.B
Минорная версия A.B.C
Обратная совместимость между A.B.C и A.B.C+1
Периодичность релизов
Мажорные релизы — 6-9 месяцев
Минорные релизы — 3-5 недель
25. 4 шага для запуска Vagrant
git clone git@github.com:phalcon/vagrant.git
cd vagrant
vagrant up
vagrant ssh
26. Основные шаги
● Реализовать новую фичу / исправить баг
● Написать тесты
● Собрать у себя локально
● PR в dev ветку
27. namespace Utils;
class Text
{
public static function camelize(string! str) -> string
{
return str->camelize();
}
}
class Text extends UtilsText
{
public static function camelize($str)
{
return parent::camelize($str);
}
}
Тестирование и отчёт о покрытии кода
31. 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
32. class Math
{
function fibonacci($n)
{
if ($n == 1 || $n == 2) {
return 1;
}
return $this->fibonacci($n - 1) +
$this->fibonacci($n - 2);
}
}
Пример fibonacci на PHP