Новое в Symfony 2.8: Polyfill Компоненты

В веб-разработке, polyfill это «дополнительный код, который предоставляет средства, которые не встроены в веб-браузер«. Они дико популярны в приложениях JavaScript, поскольку они обеспечивают равномерное API независимо от возможностей, предоставляемых браузерами пользователей.

Это проблема, с которым Symfony все чаще сталкивается, так как все более разнообразные версии PHP приходится поддерживать, от древнего PHP 5.3.3 (выпущен в июле 2010 года!) до ультрасовременного PHP 7.0. Различия в этих версиях PHP заставило нас включить много проверок версий PHP:

if (PHP_VERSION_ID >= 50400) {
    session_register_shutdown();
} else {
    register_shutdown_function('session_write_close');
}

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

if (function_exists('mb_strlen')) {
    $params[$index] = mb_substr(...);
} else {
    $params[$index] = substr(...);
}

// ...

Введение в PHP Polyfills

Поддержка пяти различных PHP версий в большой кодовой базе Symfony начало превращать процесс поддержки в ад. По этой причине мы решили создать несколько  небольших polyfill компонентов, чтобы «заполнить пробелы» из PHP версий 5.x и недостающих расширений.

Например, чтобы использовать некоторые из замечательных новых функций PHP, предоставляемые в PHP 7.0 в любом приложении на PHP 5.x, вам просто необходимо установить компонент symfony/polyfill-php70:

$ composer require symfony/polyfill-php70

Теперь ваш проект может начать использовать эти функции включены изначально в PHP 7 и предоставляемые в PHP  5.x код с помощью этого компонента:

  • intdiv()
  • preg_replace_callback_array()
  • error_clear_last()
  • random_bytes() and random_int()

Этот PHP 7 polyfill также предоставляет * Error Throwable классы.

Выберите свой PHP polyfill

Проект Symfony уже опубликовал 12 отдельных компонентов polyfill, которые могут быть использованы в приложениях:

Как вы можете видеть в этом pull request, использование всех этих polyfills позволили Symfony 2.8, удалить около 800 строк кода.

Следующие PHP polyfills

Если вы считаете, что некоторые другие polyfill могут быть полезны для Symfony или PHP в целом, поднять вопрос в главном symfony/polyfill репозитории и попросить об этом. Вы также можете предложить свой собственный код polyfill, если он соответствует стандарту качества Symfony и обеспечивает паритет поведения с родной версией.

Источник: http://symfony.com/blog/new-in-symfony-2-8-polyfill-components

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

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

10 + один =