PHP 8: Полное руководство

Опубликовано: 2021-01-05

26 ноября 2020 года мы вошли в новый мир PHP 8. Каждое обновление PHP приносит с собой целый ряд совершенно новых важных функций. Хотя не все обновления важны для большинства случайных пользователей, даже другие обновления слишком нишевые для большинства опытных разработчиков WordPress.

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

В этом руководстве мы рассмотрим наиболее важные изменения в этом новом выпуске PHP 8. Давайте углубимся.

В этом руководстве

    Почему происходят обновления PHP

    Как движок PHP постоянно меняется. Новые биты всегда модифицируются или добавляются, чтобы помочь оптимизировать код и упростить и упростить работу с PHP.

    Создатели плагинов и тем WordPress, а также разработчики веб-сайтов должны быть в курсе всех изменений PHP, когда они происходят. Поступая так, вы будете на шаг впереди игры и избежите пролистывания страниц документации после того, как произойдут еще несколько обновлений.

    Каждая новая версия PHP предназначена для внесения положительных изменений в среду разработки. К сожалению, бывают случаи, когда определенные настройки могут повредить существующий код.

    Когда несовместимые, отсталые или устаревшие атрибуты конфликтуют с новыми обновлениями PHP, это может привести к поломке всего вашего сайта или к прекращению работы некоторых его частей.

    Хорошая идея - знать, какие потенциально критические изменения выпущены, чтобы вы могли решать их непосредственно в пользовательском коде. Это также поможет вам использовать новый код с более оптимизированными выражениями.

    Однако, даже если вы не касались ни одного фрагмента пользовательского кода в своей карьере, когда ваша панель управления WordPress добавляет уведомление о необходимости обновления WordPress для обновленной версии PHP, вам придется решить, собираетесь ли вы обновляться. или не.

    Неизменно ответ на этот вопрос почти всегда положительный. Но прежде чем вы это сделаете, разумно просмотреть основные изменения функций и убедиться, что нет ничего, что могло бы вызвать у вас проблемы. Как гласит старая пословица: «Лучше перестраховаться, чем сожалеть».

    PHP 8

    Что нового в версии PHP 8

    Этот выпуск PHP ни в коем случае не является самым большим обновлением, которое когда-либо происходило. Но есть еще некоторые интересные изменения, на которые мы должны обратить внимание.

    В некотором смысле, небольшое облегчение, что PHP 8 - относительно небольшое обновление. Это означает, что меньше критических изменений, которые могут вызвать проблемы в существующем коде.

    Другими словами, текущая версия PHP предоставляет вам несколько замечательных новых функций без необходимости тратить часы на устранение неполадок.

    Хотя в эту версию PHP внесены некоторые дополнительные изменения, в этом руководстве будут рассмотрены наиболее важные из них.

    Компилятор Just In Time (JIT)

    Самым захватывающим и, безусловно, самым большим дополнением к новой версии PHP является компилятор Just In Time, или JIT.

    Как вы, наверное, знаете, PHP - это интерпретируемый язык. Это означает, что он работает в режиме реального времени, а не в заранее определенное время запуска после компиляции.

    Что JIT приносит в таблицу PHP, так это скомпилированный код. Скомпилированный код улучшает производительность в определенных ситуациях.

    Если вы похожи на многих разработчиков PHP, вы, вероятно, работаете с веб-приложениями. К сожалению, JIT мало поможет с веб-приложениями. Но это означает огромное улучшение, когда речь идет о таких задачах, как:

    • Анализ данных
    • 3D рендеринг
    • AI
    • Дополнительные процессы, выполнение которых требует много времени

    Хотя это не обязательно самые распространенные текущие PHP-приложения, дальновидные разработчики определенно расширяют свои возможности с помощью PHP.

    Компилятор JIT помогает сделать PHP более гибким.

    Фактически, JIT почти гарантированно откроет горизонты PHP и привлечет новых разработчиков, заинтересованных в его использовании для новых целей.

    Для существующих проектов это, вероятно, мало что даст.

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

    Атрибуты

    Новая версия PHP поддерживает атрибуты. Это крошечные фрагменты метаданных, которые вы добавляете в свой код, например параметры, классы и функции.

    Это означает, что вам больше не нужно использовать докблоки в качестве стандартного обходного пути. Хотя это звучит как незначительное изменение, на самом деле это намного упрощает жизнь PHP-разработчикам.

    Теперь вы можете добавить любое количество атрибутов к любой части отдельного кода, а затем импортировать их с помощью операторов использования.

    Вы даже можете добавлять параметры к атрибутам.

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

    Важно отметить, что атрибуты не имеют обратной совместимости. Они вызовут ошибки, если будут перенесены в старую версию PHP.

    Как вы, наверное, знаете, стандартный обходной путь с использованием docblock полностью функционален. Но это всегда было довольно неуклюже. В новой версии PHP теперь вы можете напрямую добавлять атрибуты.

    Хотя это небольшое дополнение к PHP, его последствия огромны.

    Новое выражение соответствия

    Операторы switch были более надежной версией операторов if. Однако новые выражения соответствия в PHP еще больше улучшают эту концепцию.

    Это короче и строже, что помогает лучше выявлять ошибки. Он также объединяет условия и не требует оператора break.

    В этом смысле новые выражения соответствия являются заметным улучшением.

    Switch по-прежнему имеет преимущество перед match, потому что он может использовать несколько выражений. Но помимо этого, подумайте о том, чтобы почитать выражения соответствия.

    Пока они выглядят как превосходная замена, которую вы, возможно, захотите использовать.

    Типы союзов

    Одной из ключевых частей PHP являются типы: присвоение переменной логической, целочисленной, нулевой и т. Д.

    До этого выпуска PHP вам было разрешено присваивать переменные только одного типа. PHP 8 позволяет назначать два или более типа, иначе называемый типом объединения.

    В качестве примера вы можете назначить тип с плавающей запятой и целочисленный тип, и он может использовать любой из них. Они указываются с помощью линии между типами, например float | int.

    Конечно, вы не сможете комбинировать void с любыми другими типами, потому что они исключают друг друга.

    Избыточные или повторяющиеся типы, такие как float | float, также не будут работать.

    В более старых версиях PHP вы могли использовать аннотации PHPDoc, чтобы попытаться создать функциональный тип объединения. Теперь вы можете пропустить такой обходной путь и просто присвоить переменным несколько типов.

    Статический возврат и смешанные типы

    Как разработчик, хорошо известно, что возврат PHP используется для возврата значения функции. До этого выпуска статический тип нельзя было использовать.

    Типы «Parent» и «self» были допустимыми, а «static» - нет. Эта проблема полностью устранена в новой версии PHP.

    Хотя это не очень распространенный вариант использования, если он появится, вы определенно будете рады, что у вас есть к нему доступ.

    Вы также найдете новый смешанный тип. Его можно было бы более точно назвать псевдотипом, потому что он представляет все остальные типы, существующие в PHP.

    Его лучше всего использовать, когда вы имеете дело с ситуациями, требующими работы с несколькими разными типами.

    Смешанный будет по умолчанию, если вы не выберете конкретный тип.

    Часто лучше использовать новый тип объединения, чем смешанный. Это потому, что вам, вероятно, захочется быть более конкретным.

    Тем не менее, этот по-прежнему будет вам полезен.

    Реальность такова, что ни один из них не так велик, как профсоюзный тип, но они определенно указывают на улучшение.

    Новые функции PHP 8

    Новая версия PHP поставляется с новыми функциями, с которыми вы можете работать.

    • str_starts_with и str_ends_with - это проверяет, заканчивается ли строка или начинается с определенной строки
    • fdiv - это позволит делению, которое будет последовательно реагировать при делении на ноль
    • str_contains - аналогично str_starts_with и str_ends_with, но проверяет всю строку
    • get_debug_type - действует аналогично gettype , но возвращает дополнительную информацию, например имя класса
    • get_resource_id - это упрощает получение идентификатора ресурса, такого как соединение с базой данных
    • preg_last_error_msg - возвращает сообщение об ошибке, которое можно прочитать на простом языке

    Протестируйте некоторые из этих новых функций, чтобы узнать, как извлечь из них максимальную пользу.

    Именованные аргументы

    Кто-то может любить это, а кто-то презирать. В любом случае именованные аргументы есть в новой версии PHP.

    Аргументы позволяют передавать данные в функцию. Именованные аргументы позволяют делать то же самое, передавая имя аргумента, а не порядок.

    Вы по-прежнему сможете комбинировать их с упорядоченными аргументами. Но при желании вы можете пропустить необязательные параметры.

    На практике это будет означать более чистый код и немного ошибок. В конце концов, чем жестче код, тем лучше. Работать с ним намного проще.

    Есть вероятность, что это может вызвать проблему с изменением имен аргументов и обратной совместимостью, что может вызвать сбои в более старых версиях PHP. Но для многих разработчиков и программистов эти названные аргументы приветствуются.

    Критические изменения в PHP 8

    В новом выпуске PHP есть несколько критических изменений. Это может вызвать ошибки при обновлении или переносе на старые версии PHP. Взгляните на этот список критических изменений и посмотрите, какие из них повлияют на вас.

    1. Классификация предупреждений двигателя была изменена, чтобы они отображали соответствующий уровень серьезности, например уведомления, предупреждения и фатальные ошибки. Считайте это незначительным критическим изменением, которое не повлияет на многие проекты.
    2. TypeError теперь будет регулярно отображаться во внутренних функциях. Это влияет на обратную совместимость больше, чем мы можем себе представить, но, тем не менее, это серьезное изменение.
    3. В уровни сообщений об ошибках, которые ранее были отключены и игнорировались, были внесены многочисленные изменения. Другими словами, теперь должны распространяться новые ошибки, которые вы, возможно, не видели раньше.
    4. Сортировка более надежная и стабильная. Хотя PHP 7 внес некоторые большие изменения в сортировку, последнее обновление наносит гораздо меньший ущерб существующему коду.
    5. Имена в пространствах имен теперь представляют собой единый токен. У них не может быть пробелов внутри. Влияние этого изменения невелико, и его легко исправить.
    6. В предыдущих версиях PHP методы с именем, соответствующим классу, интерпретировались как конструкторы. В новой версии вам придется использовать метод __construct ().

    Есть десятки других небольших обновлений, которые редко вызывают какие-либо проблемы. Вообще говоря, с текущим обновлением PHP у вас не будет особых проблем.

    Обновление вашей версии PHP в WordPress

    Как разработчик WordPress вы знаете, насколько важно поддерживать свою версию PHP в актуальном состоянии. Вызывает тревогу тот факт, что очень значительная часть пользователей WordPress все еще работает на PHP 5.6, что является огромным препятствием.

    Даже если вы работали с PHP 7.4 и думали, что вы полностью обновлены, сейчас определенно самое время обновиться до новейшей версии PHP.

    Запуск вашего сайта WordPress на более старой версии PHP представляет собой серьезную угрозу безопасности. Устаревшие версии PHP имеют уязвимые потоки безопасности, которыми регулярно пользуются хакеры.

    Единственный способ исправить существующие ямы - это постоянно поддерживать PHP в актуальном состоянии.

    Вы также захотите запустить мощный плагин безопасности WordPress, чтобы усилить защиту.

    Получите бонусный контент: Руководство по безопасности WordPress
    Кликните сюда

    Еще одна причина обновить ваш PHP - скорость. С каждым обновлением скорость работы увеличивается, а функции улучшаются. Конечно, самая заметная разница была между PHP 5.6 и 7.4. Но вы обязательно заметите увеличение скорости с последним обновлением.

    Совместимость - это последняя причина, по которой важно постоянно обновлять PHP в WordPress.

    Устаревшая версия PHP может вызвать множество различных проблем, которые могут вызвать сбои или полностью сломать веб-сайт.

    Кроме того, существуют темы и плагины, для работы которых требуется полностью последняя версия PHP.

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

    Обновить вашу версию PHP очень просто. Все, что вам нужно сделать, это войти в свою cPanel или панель администратора хоста, который вы используете, найти диспетчер версий PHP и отметить последнюю версию. Но прежде чем запускать обновление, проверьте на своем хосте, что они поддерживают новейшее обновление PHP. Некоторые могут работать на более старом программном обеспечении.

    Дополнительную информацию о PHP и WordPress можно найти в официальной документации WordPress.org по WordPress и PHP 8.

    Заключение: PHP 8 и будущее PHP

    Хотя это не чудовищное обновление, как в PHP 7.0–7.4, PHP 8 все же может предложить множество вещей, которыми вы можете воспользоваться.

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

    Какие части этого обновления вы планируете чаще всего использовать в повседневном рабочем процессе?