Огромный сборник статей от WPTec для начинающих

Мнение

Первый взгляд на PHP 7.4 для разработчиков WordPress

PHP 7.4 намечен к выпуску 28 ноября 2019 года. WordPress 5.3 также будет включать несколько коммитов , касающихся устаревших функций.

Маловероятно, что большинство разработчиков плагинов и тем WordPress смогут какое-то время использовать новые функции PHP 7.4, за исключением тех случаев, когда они работают над настройками, когда у них есть некоторая степень контроля над средой. Учитывая нежелание WordPress повышать минимальную версию PHP до последних поддерживаемых версий, могут пройти годы, прежде чем станет безопасным использование новых функций. Однако разработчики должны убедиться, что их плагины и темы совместимы с версией 7.4. Также рекомендуется не отставать от текущих функций.

WordPress 5.2 повысил минимальные требования до PHP 5.6, рекомендовав PHP 7.3. Ниже приводится разбивка текущей статистики использования PHP для установок WordPress:

  • PHP 7,3 – 9,6%
  • PHP 7.2 – 22,2%
  • 7,1 PHP – 13,5%
  • PHP 7,0 – 14,9%
  • PHP 5,6 – 25,7%

В настоящее время активную поддержку получают только PHP 7.2 и 7.3. С 1 декабря PHP прекратит поддержку безопасности для версии 7.1.

Новые возможности

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

Типизированные свойства

PHP впервые представил подсказки типов в 5.0 и продолжает улучшать эту функцию. PHP 7.0 представил объявления типа возвращаемого значения. PHP 7.4 поднимает его на ступеньку выше и позволяет разработчикам объявлять типы для свойств класса. Это позволяет разработчикам гарантировать, что тип данных, назначенных определенному свойству, всегда соответствует этому типу данных.

В следующем примере $idсвойству можно присвоить только целое число, а $titleсвойству – строку. Попытка назначить неправильный тип данных приведет к фатальной ошибке, если объявлены строгие типы. В противном случае PHP приведет значение к правильному типу.

class Event {
    public int $id;
    public string $title;

Стрелочные функции

Многие разработчики требовали использования стрелочных функций, подобных JavaScript. Они довольно удобны в использовании. Однако стрелочные функции PHP, также называемые «короткими замыканиями», немного отличаются. PHP 7.4 вводит fn ключевое слово (теперь зарезервированное ключевое слово). Короткие замыкания могут содержать только одно выражение и не иметь return ключевого слова. Они не так мощны, как их собратья JavaScript, но они предлагают быстрое решение для некоторых сценариев.

Например, в следующем фрагменте кода показаны два разных способа создания массива пользовательских электронных писем из коллекции пользовательских объектов.

// Old way, but still acceptable.
$value = array_map( function( $user ) {
    return $user->user_email;
}, $users );
// New way.
$value = array_map( fn( $user ) => $user->user_email, $users );

Распаковка внутри массивов

Распаковка аргументов была представлена ​​в PHP 5.6 , поэтому для многих разработчиков в области WordPress это все еще незнакомая территория. Это была бесценная функция в некоторых из моих проектов.

PHP 7.4 позволяет разработчикам распаковывать массив внутри массива. Это должно быть быстрее, чем array_merge() потому, что оператор распространения ( …) – это языковая конструкция, а не функция.

Рассмотрим следующий пример внедрения массива из двух цветов в больший массив цветов.

$colors_a = [ 'green', 'blue' ];
$colors_b = [ 'red', ...$colors_a, 'yellow', 'purple' ];
// [ 'red', 'green', 'blue', 'yellow', 'purple' ];

Оператор присваивания Null Coalescing

Оператор присваивания объединения null – это сокращенный способ объединения isset() проверки с тернарным оператором.

В следующем примере показано, как проверить $product[‘id’] переменную. Если он установлен, ничего не делайте. В противном случае присвойте ему значение справа. Вы можете увидеть эволюцию кода между версиями PHP. На 7.4 гораздо проще написать.

// Pre-PHP 7.0.
$product['id'] = isset( $product['id'] ) ? $product['id'] : 0;
// PHP 7.0.
$product['id'] = $product['id'] ?? 0;
// PHP 7.4.
$product['id'] ??= 0;

Устаревшие функции

В PHP 7.4 не рекомендуется использовать несколько функций. Авторы плагина и темы захотят ознакомиться с полным списком, чтобы определить, следует ли им обновлять какой-либо устаревший код. Я выбрал несколько элементов, которые видел в коде плагинов и тем за последние несколько лет. Большинство других устаревших функций маловероятно в текущих базах кода.

Вложенные тернарные операторы без скобок

Как правило, разработчику следует избегать вложенных тернарных операторов. Шутки в сторону. Только не пиши их. За ними сложно следить, и они подвержены ошибкам из-за человеческой ошибки. Однако, если вы собираетесь отбросить осторожность и отказаться от хорошего совета, по крайней мере используйте скобки. В PHP 7.4 не рекомендуется использовать вложенные троичные файлы без них.

// Not OK (deprecated).
$value = $a ? $b : $c ? $d : $e;
// OK.
$value = ( $a ? $b : $c ) ? $d : $e;
// OK.
$value = $a ? $b : ( $c ? $d : $e );

Использование array_key_exists () для объектов

Разработчики не должны использовать array_key_exists() для объектов просто потому, что объекты не являются массивами. Вместо этого используйте более подходящую property_exists() функцию или isset().

// Not OK (deprecated).
if ( array_key_exists( $property, $object ) ) {}
// OK.
if ( property_exists( $object, $property ) ) {}
// OK.
if ( isset( $object->$property ) ) {}

Доступ к массиву и смещению строки с помощью фигурных скобок

Использование фигурных скобок для доступа к массиву и строковому смещению – большая редкость, но я видел это на практике пару раз. Убедитесь, что вы используете квадратные скобки, например, [] вместо фигурных скобок, например {}.

// Not OK (deprecated).
$value = $a{ $key };
// OK.
$value = $a[ $key ];

 

Рекомендуем прочитать
Мнение

Плагин Delete Me для WordPress помогает владельцам веб-сайтов предоставить право на забвение GDPR

Мнение

Команда Gutenberg наращивает юзабилити-тестирование в WordCamp US

Мнение

Плагин распространителя теперь в бета-версии: новое решение для синдикации контента WordPress от 10up

Мнение

Gutenberg 1.8 добавляет большую расширяемость для разработчиков плагинов

Подпишитесь на рассылку
и будьте в курсе новостей Wordpress

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *