Пока я работаю с WordPress, разговоры (и я использую этот термин вольно) о том, какие версии PHP он должен или не должен поддерживать, не прекращались.
- Суть в том, что некоторые видят в нем такое же большое и популярное приложение, как WordPress, которое поддерживает так много веб-сайтов на основе CMS, что должно иметь возможность использовать его влияние для создания более инновационных решений.
- Другие видят, что люди не часто обновляются, используют бюджетные хосты или просто не заботятся (не говоря уже о том, чтобы знать), какую версию PHP они используют.
Эти два пункта могли бы дать пост и комментарии в течение нескольких дней, но меня это не интересует. Поскольку моя команда и я занимаемся созданием пользовательских решений для других, у нас есть возможность подвести итоги того, где пользователи размещают свой сайт или приложение, развернуть его и использовать функции PHP, предлагаемые их хостами.
Однако бывают случаи, когда я сталкивался с некоторыми людьми, использующими версии PHP даже ниже 5.3.
Что тогда?
Во- первых, на странице требований WordPress конкретно упоминается об этом:
Если вы находитесь в устаревшей среде, где у вас есть только более старые версии PHP или MySQL, WordPress также работает с PHP 5.2.4+ и MySQL 5.0+, но эти версии достигли официального окончания срока службы.
Так что, чтобы было ясно, он работает на старых версиях PHP, но мы, как разработчики, будем сильно ограничены тем, что мы можем делать с языком. И, как упоминается на странице, не следует игнорировать последствия для безопасности и поддержку «конца жизни» версии языка.
Всякий раз, когда я работаю с плагином или чем-то, что будет работать на WordPress, и я знаю, что это должно работать на разных хостах, я предоставляю минимальный уровень поддержки. Обычно это PHP 5.6.20.
Если среда, в которой будет выполняться проект, не поддерживает это, я сообщу об этом и предотвратю запуск проекта. В контексте плагина, вероятно, лучше всего подключиться к функции register_activation_hook.
Для этого вы можете написать что-то вроде этого:
<?php
register_activation_hook(__FILE__, __NAMESPACE__. 'acme_activate');
/**
* Verifies that the user is running the proper version of WordPress for the
* plugin to execute; otherwise, displays an error message and prevents the
* plugin from being activated.
*/
function acme_activate()
{
if (version_compare(PHP_VERSION, '5.6.20', '<')) {
wp_die(
sprintf(
'Acme requires PHP 5.6.20 or higher.
Your WordPress site is using PHP %s. Please contact your hosting
provider and ask that they upgrade the version of PHP on which
your installation of WordPress is running. Click back in your
browser to your WordPress dashboard.',
PHP_VERSION) );
}
}
Конечно, это просто, и на дисплее используется стандартный стиль wp_die, но он тоже работает. Если у вас больше опыта или времени, вы также можете запустить проверки немного по-другому и предоставить свой собственный стиль.
Цель этого поста не в том, как это сделать. Вместо этого пункты таковы:
- определите, какую версию PHP вы собираетесь поддерживать,
- сравнить версию PHP, работающую на сервере,
- отображать сообщение, если версия PHP на сервере меньше той, которую вы будете поддерживать,
- изящно выйти.
Как вы в конечном итоге отобразите это, зависит от вас, но сути приведенного выше кода должно быть достаточно, чтобы вы начали.
Дополнительные примечания
И если вы действительно хотите углубиться в работу со строками в PHP, я рекомендую статью Карла об обработке строк в PHP.