Релиз PHP 7:ключевые особенности и что вам нужно знать
Если вы разработчик, вы, вероятно, знаете, что вышла полнофункциональная бета-версия нового PHP 7. Версия 7.0.0 содержит множество интересных функций и возможностей. Однако мы рекомендуем не использовать его в производственной среде. , пока не получите стабильную версию, которая ожидается в ноябре 2015 г.
Вы можете тестировать и играть с последней бета-версией, а также сообщать об ошибках, если вы обнаружите их в ходе тестирования. Мы перечисляем все изменения и обновления, которые вы увидите в PHP 7.0.0.
16. Это PHP 7 (а не 6)
Текущая стабильная версия — PHP 5.6. Итак, многие разработчики ожидают версию 6.0. Чего они не знают, так это того, что PHP 6 уже существовал в прошлом как экспериментальный процесс, но так и не дошел до стадии производства. Основная группа разработчиков решила, что в следующем основном выпуске будет использоваться название PHP 6.
15. Поддержка 64-битной версии Windows
Текущая версия PHP не обеспечивает поддержку 64-битных целых чисел или больших файлов. В будущем ситуация изменится, поскольку в PHP 7 реализована последовательная поддержка 64-битных чисел, а это означает, что будут поддерживаться как собственные 64-битные целые числа, так и большие файлы.
14. Удаление устаревших функций и расширений
Одной из основных целей PHP 7 было освобождение памяти для возможности улучшений, поэтому возникла необходимость исключить старые неподдерживаемые серверные API, расширения и устаревшие функции.
Все снятые предметы долгое время не использовались. Однако если у вас есть устаревшее приложение, работающее на более старых версиях, обновление до PHP 7 потенциально может привести к поломке кода.
Читайте:30 инструментов отслеживания ошибок для разработчиков
13. Заявления о групповом использовании
Этот RFC создан для улучшения текущей реализации пространства имен PHP путем введения концепции группы объявлений. Эта функция полезна для тех программистов, которые обычно импортируют множество классов из одного и того же пространства имен. Новый синтаксис устраняет многословие, делает ваш код более аккуратным и экономит много времени при наборе текста.
12. Анонимные классы
Концепция анонимных классов уже используется в других объектно-ориентированных языках программирования, таких как Java и C#. Это не что иное, как класс без имени, который может ускорить кодирование и время выполнения. Их следует использовать, когда класс используется только один раз во время выполнения и когда класс не нуждается в документировании.
11. Единый синтаксис переменных
Единый синтаксис переменных устраняет многие несоответствия в способах вычисления выражений. Например, возможность вызывать замыкание, назначенное свойствам, с помощью ($object->closureProperties)() , а также возможность связывать статические вызовы.
В старой версии PHP $obj->$properties[’name’] получит доступ к свойству, имя которого находится в ключе имени массива свойств. Теперь он получит доступ к ключу имени свойства, имя которого находится в $properties.
10. Синтаксис escape-кода Unicode
Новый escape-символ (\u) позволяет нам однозначно указывать кодовые точки символов Юникода (в шестнадцатеричном формате) внутри строк. Например, если вы не можете ввести какой-либо смайлик, вместо этого вы можете использовать его escape-последовательность.
9. Общий родительский класс в обработке исключений
Для PHP-кодеров обработка фатальных и уловимых фатальных ошибок никогда не была легкой задачей. С помощью новых исключений Engine вы можете заменить подобные ошибки исключениями.
Чтобы программисты могли перехватывать как традиционные исключения, так и исключения механизма, в PHP 7 представлен новый общий родительский класс под названием \BaseException. .
8. Закрытие привязки при вызове
Закрытие::bind() и Closure->bindTo() позволяет изменить привязку $this и область вызова, по отдельности или вместе, создавая дубликат замыкания. В PHP 7 это можно легко сделать во время вызова, привязав оба $this и вызов области действия того же объекта с добавлением Замыкание->вызов(). Метод принимает объект в качестве первого аргумента, за которым следует любой аргумент, передаваемый в замыкание.
7. Нулевой оператор объединения
Оператор объединения обозначается знаком «??». Он возвращает результат своего первого операнда, если он существует и не равен NULL, в противном случае он вернет второй операнд. Это означает, что использовать объединение совершенно безопасно, поскольку оно не вызовет E_NOTICE, даже если значение не существует.
6. Комбинированный оператор сравнения
Комбинированный оператор сравнения (также известный как оператор космического корабля) аналогичен version_compare() или strcmp() в поведении, но его можно использовать во всех общих значениях PHP. Он уже существует на языках программирования Ruby и Perl.
Оператор возвращает -1, если левый операнд больше, 0, если оба равны, и 1, если левый операнд больше.
5. Выражение возврата генератора и делегирование генератора
Выражение возврата генератора позволяет вам вернуть значение после успешного завершения работы генератора. В PHP 7 вы можете вызвать $generator->getReturn(). для получения возвращаемого значения. Если генератор еще не вернул или не выдал неперехваченное исключение, $generator->getReturn() выдаст исключение. В случае, если генератор завершился, но возврата не было, возвращается NULL.
Функция делегирования генератора позволяет вам возвращать другую итерируемую структуру, которую можно обходить, будь то итератор, массив или другой генератор. Итерация подструктуры выполняется внешним исходным циклом, а не рекурсивным.
4. Объявления возвращаемого типа
Многие программисты хотели бы объявить тип возвращаемого значения функции. Это помогает предотвратить нарушение ожидаемого возвращаемого типа супертипа непреднамеренными возвращаемыми значениями и подтипами, особенно в интерфейсах. Более того, в PHP 7 есть 4 новых типа замедления для скалярных типов — string, int, float и bool. Эти новые типы позволяют программистам указывать, что они ожидают возврата целого числа, числа с плавающей запятой, строки и логического значения.
На изображении выше предполагается, что функция foo возвращает массив. Ознакомьтесь с некоторыми сложными примерами.
3. Абстрактное синтаксическое дерево
Самым большим и незаметным изменением является добавление абстрактного синтаксического дерева — промежуточного представления кода во время компиляции. Он заменяет существующую практику выдачи кодов операций непосредственно из парсера. Это позволяет нам убрать ряд хаков и делает реализацию более понятной и поддерживаемой. Кроме того, вы можете реализовать синтаксис, который невозможно реализовать при однопроходной компиляции.
2. Совершенно новый Zend-движок
Первый Zend Engine появился в 1999 году в версии PHP 4. Это скриптовый движок с открытым исходным кодом (написанный на C), который интерпретирует PHP. Текущая версия PHP использует Zend Engine II, который обеспечивает управление памятью и ресурсами, а также добавляет в язык расширяемую объектную модель и существенно повышает производительность.
Новый Zend Engine III под кодовым названием phpng находится в разработке для PHP 7.
1. Производительность + экономия памяти
Основная причина перехода на PHP 7 — это его производительность. Это хорошая новость, особенно для небольших хостингов, поскольку они смогут обслуживать больше клиентов на одном и том же оборудовании. Производительность 7-й версии находится на одном уровне с Facebook HHVM, который оснащен JIT-компилятором (точно в срок), который позволяет компилировать во время выполнения, а не перед выполнением. Также имеется существенная экономия памяти за счет оптимизации внутренних структур данных.
Рекомендуется:30 потрясающих PHP-библиотек для программистов и разработчиков
Как вы можете видеть на графике, опубликованном Zend, запрос WordPress на PHP 5.6 выполняется под 100 млн инструкций ЦП, тогда как PHP 7 выполняет только 25 млн инструкций для выполнения той же работы. Более того, тестирование показывает, что вы можете выполнять 3 транзакции Magento на одном и том же оборудовании, а Drupal 8 работает на 72% быстрее с PHP 7.
Промышленные технологии
- От быстрого к медленному уходу машинистов
- Из каких частей состоит сварной шов? - Объясните с помощью схемы
- Односторонняя печатная плата — полное руководство по экономии
- Андон:Как лучше контролировать его производство за счет опережения/задержки?
- Что такое сварочные электроды? - Полное руководство
- Покрытие металла для предотвращения коррозии прецизионных деталей
- Может ли налог VMT решить дилемму финансирования инфраструктуры?
- Маркировка пластиковых деталей с помощью тампопечати и лазерной гравировки
- СУБТРАКТИВНОЕ ПРОИЗВОДСТВО И АДДИТИВНОЕ ПРОИЗВОДСТВО:В ЧЕМ РАЗНИЦА?
- Датчики расстояния:подробное руководство