Август, 2015

Мощнее, быстрее, удобнее: обновление PHP7

Опубликовано: 18.08.2015 | 1813

Стабильная версия PHP7 ещё даже не на горизонте событий – выйдет аж в ноябре 2015 года. А у нас тут лето, и мы не хотим помнить о том, что скоро оно закончится. Так что пока мы ждём полноценную рабочую семёрку и хотим, чтоб август длился ещё пару столетий, особо упорные и любопытные первооткрыватели могут собрать и протестировать её полностью!

А мы пока составили список интересных возможностей PHP7, которые вас ждут.

1. Это PHP7 (не 6)

Текущая стабильная версия PHP – 5.6. Поэтому следующей ожидалась 6.0. Ан нет! PHP6 уже был – он создавался в качестве эксперимента и не дошёл до стадии производства. Команда разработчиков решила, что они оставят имя PHP6 для следующего прорывного релиза.

2. Чистка рядов

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

Но не волнуйтесь, под удаление попали только бесполезные и не используемые в течение долгого времени компоненты. Правда,

Если у вас есть устаревшие приложения, то переход на PHP7 потенциально может сломать ваш код.

3. Группировка деклараций use

Эта функция полезна для тех кодеров, кто, как правило, импортирует множество классов из той же области имен. Если раньше каждый класс приходилось прописывать отдельно, то теперь их можно группировать, аминь! Новый синтаксис исключает многословие, делает код чище и читабельнее. И быстрее, но всего на 17 секунд, как комментируют обновление наши прогеры.

PHP группировка use

4. Производительность

Тесты PHP7 показывают, что по скорости он идёт наравне с HHVM от Facebook, который используется как Just In Time (JIT) компилятор. JIT переводит PHP-код в машинные инструкции. У семёрки не будет своего компилятора, и такой буст производительности в ~10% (местами до ~30%) возможен благодаря движку PHPNG.

5. Операторы

1. Комбинированный оператор сравнения <=> или Spaceship-оператор по поведению аналогичен version_compare() или strcmp(), но может быть использован во всех общих значениях PHP. Spaceship уже есть в языках Ruby и Perl.

Принцип работы: если левый оператор больше, то он возвращает -1, если они равны, то 0, а если правый, то 1.

Spaceship-оператор

2. ?? можно использовать, к примеру, для прохождения по цепочке переменных, чтобы вернуть первую ненулевую переменную:

Оператор ??

Принцип работы: Если левый операнд имеет значение NULL, то возвращается правый. Если не имеет, то возвращается левый.

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

Концепция анонимных классов уже реализована в Java и C #. «Анонимусы» нужны для ускорения работы и времени выполнения кода. Подойдут в случае, если класс используется только один раз во время исполнения и его не нужно при этом документировать.

7. Обработка исключений

Обработка фатальных и улавливаемых ошибок никогда не была легкой задачей для PHP программистов. Как только пойман баг такого типа – приложение крэшится и не даёт обработать другие ошибки. А новая функция EngineException заменяет критикалы на исключения. В PHP7 также будет новый общий родительский класс под названием | BaseException.

Конечно, при выходе стабильной версии семёрки, мы увидим ещё больше новинок, упрощающих и ускоряющих работу программистов, что особо важно для веб-разработки. А что вы думаете насчёт PHP7? Будете тестировать уже сейчас, дождётесь официального релиза, или не планируете пока переходить на семёрку?