Выход PHP 7.4 намечен на 28 ноября 2019 года. Релиз WordPress 5.3 также будет включать в себя несколько коммитов, связанных с тем, что некоторые возможности в PHP 7.4 теперь считаются устаревшими.
Маловероятно, что большинство разработчиков плагинов и тем WordPress смогут прибегнуть к новым возможностям PHP 7.4 в ближайшей перспективе. Исключение составляют лишь случаи, когда разработчики имеют некоторый контроль над средой. Учитывая нежелание повышать минимальную версию PHP в WordPress до последних поддерживаемых версий, могут пройти годы, прежде чем разработчики смогут безопасно использовать новые возможности. Однако разработчики должны убедиться, что их плагины и темы совместимы с 7.4.
В WordPress 5.2 были увеличены минимальные требования к PHP до версии 5.6, причем рекомендуется использовать 7.3. Ниже приводится разбивка статистики использования версий PHP по сайтам с WordPress:
- PHP 7.3 – 9.6%
- PHP 7.2 – 22.2%
- PHP 7.1 – 13.5%
- PHP 7.0 – 14.9%
- PHP 5.6 – 25.7%
В данный момент только версии PHP 7.2 и 7.3 имеют активную поддержку. С 1 декабря поддержка безопасности для PHP 7.1 будет прекращена.
- Новые возможности
- Типизированные свойства
- Стрелочные функции
- Распаковка внутри массивов
- Оператор null-объединения
- Возможности, признанные устаревшими
- Вложенные тернарные операторы без круглых скобок
- Использование array_key_exists() для объектов
- Доступ к элементам массива и смещениям строк с помощью фигурных скобок
Новые возможности
В PHP 7.4 появится ряд новых функций, которые облегчат написание кода. Ниже приведен обзор некоторых функций, которые, скорее всего, будут полезны для авторов плагинов и тем WordPress.
Типизированные свойства
Контроль типа (тайпхинтинг) был впервые введен в версии 5.0, и с тех пор эта возможность постоянно улучшалась. В PHP 7.0 были введены объявления типов возвращаемых значений. В PHP 7.4 разработчики смогут объявлять типы для свойств классов.
В следующем примере свойству $id может быть присвоено только целочисленное значение, а свойству $title – строковое. Попытка присвоить неправильный тип данных приведет к фатальной ошибке, если объявлена строгая типизация.
class Event { public int $id; public string $title; }
Стрелочные функции
Многие разработчики просили ввести стрелочные функции по аналогии с JavaScript. Они достаточно удобны в использовании. Стрелочные функции PHP, которые также называются «короткими замыканиями», имеют некоторые отличия. В PHP 7.4 появится ключевое слово fn (теперь оно является зарезервированным). Короткие замыкания могут содержать только одно выражение и не иметь ключевого слова return. Они не так мощны, как их собратья в JavaScript, однако они предлагают быстрое решение для некоторых сценариев.
В следующем фрагменте кода показано два реальных способа создания массива с пользовательскими email из коллекции пользовательских объектов.
// Старый вариант, все еще применимый. $value = array_map( function( $user ) { return $user->user_email; }, $users ); // Новый вариант. $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-объединения
Оператор null-объединения – короткий способ объединения проверки isset() с тернарным оператором.
В следующем примере показано, как проверить переменную $product[‘id’]. Если оператор задан, ничего не делается. Иначе ему присваивается значение справа. Вы можете увидеть эволюцию кода в разных версиях PHP. Гораздо проще писать в PHP 7.4:
// До 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 вложенные тернарные операторы без круглых скобок будут признаны устаревшими.
// Уже не OK (устаревший вариант). $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().
// Уже не OK (устаревший вариант). if ( array_key_exists( $property, $object ) ) {} // OK. if ( property_exists( $object, $property ) ) {} // OK. if ( isset( $object->$property ) ) {}
Доступ к элементам массива и смещениям строк с помощью фигурных скобок
Использование фигурных скобок для доступа к элементам массивов и смещениям строк – большая редкость, но я сталкивался с этим несколько раз. Убедитесь в том, что вы используете квадратные скобки, а не фигурные.
// Уже не OK (устаревший вариант). $value = $a{ $key }; // OK. $value = $a[ $key ];
Встречи строго конфиденциальные, реальные феи Самары, к каждому мужчине персональный подход -wowsamara.ru. Услужливые проститутки никогда и ни в чем не откажут своему клиенту. Позитивные реальные феи Самары, горячие и прелестные, они такие модельные и раскрепощённые, что тебе обязательно захочется секса. Прелестницы ждут тебя.
Блин, везде где незайду обсудают WP. Я непойму, неужеле это самая топовая cms в мире?
:D Без комментариев
35% сайтов мира построены на WP, как вы считаете, это топ или Битрикс, Джумла, Друпал лучше?
@Артем.
Так вы на ВП блоге статью читаете, что удивительного?
А ему всё равно, где ссылку на свой гс оставить
Ссылку убрал)
ага и версия wp старая тоже 4.9.13
У меня все сайты стояли на 5.6 — попытался обновить некоторые из них на 7.2 (хостер рекомендовал выше не выбирать версию). Сайт (в подписи) сразу завалило ошибками, хотя у меня тема полностью чистая, с нее весь мусор и лишние функции выпилены. По остальным ошибки даже лечить не стал — сразу вернул ту версию что была и все.
Это я к чему = прироста производительности или скорости сайта я не заметил. А усилий достаточно много затрачено. Имхо — оно того не стоит.
Далеко не всегда все работает при обновлении версии. Есть старые темы, старые плагины.
Очень интересная статья
Все должно летать, с новой пыхой-)