Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Релиз PHP 7: Ключевые особенности и что нужно знать разработчику

Если вы разработчик, наверняка знаете: feature-complete бета PHP 7 уже вышла. Версия 7.0.0 приносит множество крутых фич. Но не рекомендуем использовать в продакшене до стабильного релиза (ожидался ноябрь 2015). Свободно тестируйте бета-версию и репортьте баги. Ниже — все изменения в PHP 7.0.0.

16. Это PHP 7 (не 6)

Текущая стабильная — PHP 5.6. Многие ждали 6.0. Но PHP 6 уже существовал как эксперимент, но не дошёл до продакшена. Кор-команда решила пропустить номер 6 для следующего мажорного релиза.

15. Поддержка 64-битных Windows

Текущий PHP не даёт 64-битные целые или поддержку больших файлов. PHP 7 вводит последовательную 64-битную поддержку: нативные 64-битные целые и большие файлы.

14. Удаление устаревших функций и расширений

Главная цель PHP 7 — освободить память для улучшений, поэтому убрали старые неподдерживаемые серверные API, расширения и депрекейт-функционал. Удалённое давно не использовалось. Но если у вас легаси на старых версиях — апгрейд может сломать код.

13. Групповые use-декларации

RFC для улучшения неймспейсов: концепция групповых деклараций. Полезно, если импортируете много классов из одного неймспейса. Новый синтаксис убирает вербозность, делает код чище, экономит время на 타이пинг.

12. Анонимные классы

Концепция уже есть в Java и C#. Класс без имени — ускоряет кодинг и выполнение. Используйте, когда класс нужен один раз за выполнение и не требует документирования.

11. Унифицированный синтаксис переменных

Решает несовместимости в вычислении выражений. Например, вызов замыкания, присвоенного свойству: ($object->closureProperties)(), а также чейнинг статических вызовов.

В старых версиях $obj->$properties['name'] обращался к свойству, имя которого в ключе 'name' массива properties. Теперь — к ключу 'name' свойства, имя которого в $properties.

10. Unicode Codepoint Escape Syntax

Новый escape-символ (\u) позволяет задавать Unicode code points (в hex) однозначно внутри строк. Не можете набрать эмодзи — используйте escape-последовательность.

9. Общий родительский класс в обработке исключений

Для PHP-кодеров фатальные и перехватываемые фатальные ошибки всегда были проблемой. Новые Engine Exceptions позволяют заменять их на исключения. Для перехвата и традиционных, и engine-исключений введён общий родительский класс \BaseException.

8. Bind Closure on Call

Closure::bind() и Closure->bindTo() позволяют менять биндинг $this и вызывающей области видимости, создавая дубликат замыкания. В PHP 7 — простой способ сделать это в момент вызова, биндя и $this, и область видимости к одному объекту через Closure->call(). Метод принимает объект первым аргументом, затем аргументы для замыкания.

7. Оператор Null Coalesce (??)

Возвращает первый операнд, если он существует и не NULL, иначе — второй. Полностью безопасен: не вызывает E_NOTICE, даже если значения нет.

6. Оператор комбинированного сравнения (Spaceship)

Похож на version_compare() или strcmp(), но работает для всех общих PHP-значений. Есть в Ruby и Perl. Возвращает -1 если левый операнд меньше, 0 если равны, 1 если левый больше.

5. Generator Return Expression и Generator Delegation

Generator return expression позволяет вернуть значение при успешном завершении генератора. В PHP 7: $generator->getReturn() для получения возвращённого значения. Если генератор не вернул или бросил исключение — кидает исключение. Если завершился без return — NULL.

Generator delegation позволяет возвращать другую итерируемую структуру (итератор, массив, другой генератор). Итерация подструктуры делается внешним циклом, а не рекурсивно.

4. Объявления типов возврата

Многие хотят объявлять тип возвращаемого значения функции. Предотвращает нежелательные возвраты и подтипы, ломающие ожидаемый тип супертипа, особенно в интерфейсах. PHP 7 добавляет 4 новых скалярных типа: string, int, float, bool — можно указать ожидаемый возврат integer, float, string, boolean.

3. Abstract Syntax Tree (AST)

Самое большое невидимое изменение — добавление AST: промежуточное представление кода при компиляции. Заменяет прямую эмиссию опкодов из парсера. Убирает хаки, делает реализацию понятнее и поддерживаемее. Позволяет синтаксис, невозможный с single-pass компиляцией.

2. Новый Zend Engine

Первый Zend Engine — 1999 в PHP 4. Открытый скриптовый движок (на C), интерпретирующий PHP. Текущий использует Zend Engine II: управление памятью/ресурсами, расширяемая объектная модель, значительный производительный буст. Новый Zend Engine III (кодовое имя phpng) — в разработке для PHP 7.

1. Производительность + Экономия памяти

Главная причина апгрейда — производительность. Хорошая новость для мелких хостеров: смогут хостить больше клиентов на том же железе. Производительность на уровне Facebook HHVM (JIT-компиляция в рантайме). Существенная экономия памяти за счёт оптимизации внутренних структур данных.

По графику Zend: WordPress-запрос на PHP 5.6 выполняется за <100M CPU-инструкций, PHP 7 — только 25M. Тесты: 3x Magento-транзакций на том же железе, Drupal 8 — на 72% быстрее на PHP 7.

Рекомендуется: 30 потрясающих PHP-библиотек для программистов и разработчиков

Промышленные технологии

  1. Eclipse Ditto 1.0 — платформа Device-as-a-Service для разработки Digital Twin
  2. Как стать ведущим поставщиком производства: 7 проверенных советов для рыночного лидерства
  3. Использование инноваций цепочки поставок для борьбы с COVID‑19
  4. Три ключевые стратегии повышения безопасности рабочих в промышленных условиях
  5. Concrete Collective повышает интерьеры с Fusion 360 Nesting & Fabrication Extension
  6. Повышение промышленной эффективности с BLE-базированными системами реального времени локализации (RTLS)
  7. От MVP к прибыли: масштабируйте продукт в машину для генерации выручки
  8. Как напольные коврики повышают продуктивность на рабочем месте: 5 доказанных выгод
  9. Выбор идеального твердосплавного круглого инструмента для пиковой производительности обработки
  10. Продвинутые высокопрочные стали: определение, преимущества и автомобильные применения