Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

What’s New in PHP7?

734 views

Published on

This presentation is about PHP7, its innovations’ overview with practical examples. You will learn how to move to PHP7 and see performance сomparison between PHP 5.6 and PHP7.

This presentation by Dmytro Nazarenko (Senior PHP Developer / Tech Lead) was delivered at GlobalLogic Kharkiv PHP Meetup #1 on September 14, 2016.

Published in: Software
  • Be the first to comment

  • Be the first to like this

What’s New in PHP7?

  1. 1. PHP 7: что день грядущий нам готовит? Обзор новинок в PHP 7 Назаренко Д.Н. Senior PHP Developer/Tech Lead. nazarenko.dmitry@gmail.com
  2. 2. Предисловие: PHP5->PHP7, а где же PHP6?
  3. 3. Обзор нововведений ● Производительность; ● Группировка объявлений импорта:
  4. 4. Обзор нововведений Вместо use FrameworkModuleFoo; use FrameworkModuleBoo; В PHP7 можно написать: Use FrameworkModule{Foo,Bar}
  5. 5. Обзор нововведений ● Null-коалесцентный оператор До PHP 7: if (isset($foo)) { $bar = $foo; } else { $bar = 'default'; // присваиваем $bar значение 'default' если $foo равен NULL } В PHP7: $bar = $foo ?? ‘default’;
  6. 6. Обзор нововведений ● Оператор “космический корабль” <=> switch ($bar <=> $foo) case 0; echo'$bar и $foo равны’; case -1; echo '$foo больше’; case 1; echo '$bar больше’; }
  7. 7. Обзор нововведений ● Типы скалярных параметров и подсказки (hints) по возвращаемым типам class Calculator { // объявляем, что параметры имеют целый тип integer public function addTwoInts(int $x, int $y): int { // явно объявляем, что метод возвращает целое return $x + $y; } }
  8. 8. Обзор нововведений ● исключения движка: С появлением исключений уровня ядра, фатальные ошибки, которые ранее могли привести к остановке выполнения скрипта, теперь могут быть легко перехвачены и обработаны.Ошибки, такие как вызов несуществующего метода, теперь не остановят скрипт, вместо этого будет сгенерировано исключение, которое можно обработать в блоке try catch, что явно улучшает обработку ошибок в вашем приложении. До PHP 7 такой код привел бы к фатальной ошибке исполнения скрипта: try { thisFunctionDoesNotEvenExist(); //Эта Функция Не Существует } catch (EngineException $e) { // Подчищаем за собой и записываем информацию об ошибке в лог echo $e->getMessage(); }
  9. 9. Обзор нововведений ● анонимные классы До PHP 7: class MyClass { public function log($msg) { print_r($msg . "n"); } } $pusher->setLogger( new MyClass() ); Использование анонимного класса: $pusher->setLogger(new class { public function log($msg) { print_r($msg . "n"); } });
  10. 10. Обзор нововведений ● обновленные генераторы function genA() { yield 2; yield 3; yield 4; } function genB() { yield 1; yield from genA(); // 'genA' вызывается и отрабатывает в этом месте yield 5; return 'success'; // финальный результат, который мы позже можем проверить } foreach (genB() as $val) { echo "n $val"; // выдаст значения от 1 до 5 }
  11. 11. Обзор нововведений ● ожидания (expectations) - улучшение функции assert() с сохранением обратной совместимости. Они позволяют использовать утверждения с нулевой стоимостью (zero- cost assertions) в рабочем коде и поддерживают возможность генерации пользовательского исключения при возникновении ошибки при отработке утверждения, что может быть полезно во время разработки и тестирования с целью отладки. Функция assert() стала языковой конструкцией в PHP 7.
  12. 12. Производительность PHP7 ● в основе ядра PHP7 используется PHPNG. Новое ядро дает прирост производительности от 40% и более. ● бенчмарки PHP 5.6 vs. PHP7 для некоторых фреймворков
  13. 13. Производительность PHP7 ● бенчмарки PHP5.6 vs. PHP7 для функций и конструкций ядра
  14. 14. Миграция на PHP7 Много устаревших функций были удалены: ● расширение ereg; ● mysql расширение; ● модификатор eval для функции preg_replace; ● Выражение $foo->$bar['baz']() раньше означало $foo- >{$bar['baz']}(), сейчас интерпретируется слева- направо: ($foo->$bar)['baz'](); ● Конструкторы в стиле PHP 4 теперь считаются устаревшими (deprecated) (т.е. методы конструктора с именем класса). ● утилита PHP 7 Migration Assistant Report (MAR)
  15. 15. Выводы СПАСИБО ЗА ВНИМАНИЕ! До новых встреч!

×