Неделю назад прошел еще один micro-talk по PHP. На этот раз не было модных новостей по фронтенду, а поскольку в PHP не всё так динамично, то темы были давние.
Начинаем с общей темы. Уже, наверное год, как Google зафорсил https на .dev доменах, но стоит еще раз об этом напомнить. Для этого можно почитать статью Chrome & Firefox now force .dev domains to HTTPS via preloaded HSTS. И как описано в статье, в окружении для разработки лучше использовать домены .test — они лучше всего для этого подходят.
А теперь переходим к PHP...
- Badoo переходили на PHP 7. Уже давно. Одна из проблем, которая перед ними встала — поддержка 60 000 юнит-тестов, которые написаны с использованием runkit. Runkit до сих пор не совместим с PHP 7. Чтобы решить проблему, они придумали свое довольно интересное решение на PHP. О том, как они это делали и что получилось в итоге, можно почитать в статье SoftMocks: наша замена runkit для PHP 7.
- Что вы делаете, когда вам нужно быстро накидать пару строчек кода на PHP и посмотреть как оно работает? Я обычно запускаю
php ‑a
и накидываю всё, что мне нужно. Казалось бы — это лучший вариант, но не всегда. Если вам нужно посмотреть как код будет вести себя в разных версиях PHP, посмотреть опкоды и производительность, то отличный инструмент для этого — онлайн песочница 3v4l.org. - Песочница 3v4l (читается eval) еще и сохраняет ссылочки на версии вашего кода, вот, например, известная проблема со сравнением числовых строк, которая решена в PHP7, хотя делать так все равно не стоит, ибо сравнение числовых строк в инженерной нотации даст подобный эффект. Для сравнения строк всегда используйте строгое сравнение, в вышеуказанном примере с
in_array
, используйте последний аргумент$strict = true
. - Стоит отметить, что для отображения опкодов 3v4l использует расширение Vulcan Logic Dumper (VLD). Есть и другие способы получить информацию об опкодах в PHP:
# Opcache, since PHP 7.1
php -d opcache.opt_debug_level=0x10000 test.php
# phpdbg, since PHP 5.6
phpdbg -p* test.php
# vld, third-party extension
php -d vld.active=1 test.php - Ну и раз уж мы часто упоминаем PHP 7, стоит напомнить, что в конце этого года заканчивается срок жизни PHP 5.6 и пора обновляться до семерки. Поможет в этом вопросе PHP 7 Migration Assistent Report.
- Недавно запустился очень клёвый ресурс phpinternals.net. На нем собрано много информации по внутренностям PHP.
- На PHP Internals также есть ссылки на другие полезные ресурсы, например, why can't we have nice things (конкретно эта ссылка — на rfc про поддержку шестнадцатеричных значений в числовых строках, о которых было сказано ранее). Данный ресурс показывает PHP RFC в более удобоваримом виде.
- Ну и раз уж мы заговорили про RFC, тот вот rfc на тему удаления backtick оператора в php. Про backtick оператор особо никто и не знает, а теперь видимо и не придется знать.
- Еще на github есть репозиторий с бекдорами для PHP. Может быть интересно в исследовательских целях.
- И, наконец, последняя, но важная ссылка Learning OOP in PHP.
Предыдущий дайджест: Микро-толки — дайджест #8
Следующий дайджест: Микро-толки — дайджест #10