Микро-толки — дайджест #9

Неделю назад прошел еще один micro-talk по PHP. На этот раз не было модных новостей по фронтенду, а поскольку в PHP не всё так динамично, то темы были давние.

Начинаем с общей темы. Уже, наверное год, как Google зафорсил https на .dev доменах, но стоит еще раз об этом напомнить. Для этого можно почитать статью Chrome & Firefox now force .dev domains to HTTPS via preloaded HSTS. И как описано в статье, в окружении для разработки лучше использовать домены .test — они лучше всего для этого подходят.

А теперь переходим к PHP...

  1. Badoo переходили на PHP 7. Уже давно. Одна из проблем, которая перед ними встала — поддержка 60 000 юнит-тестов, которые написаны с использованием runkit. Runkit до сих пор не совместим с PHP 7. Чтобы решить проблему, они придумали свое довольно интересное решение на PHP. О том, как они это делали и что получилось в итоге, можно почитать в статье SoftMocks: наша замена runkit для PHP 7.
  2. Что вы делаете, когда вам нужно быстро накидать пару строчек кода на PHP и посмотреть как оно работает? Я обычно запускаю php ‑a и накидываю всё, что мне нужно. Казалось бы — это лучший вариант, но не всегда. Если вам нужно посмотреть как код будет вести себя в разных версиях PHP, посмотреть опкоды и производительность, то отличный инструмент для этого — онлайн песочница 3v4l.org.
  3. Песочница 3v4l (читается eval) еще и сохраняет ссылочки на версии вашего кода, вот, например, известная проблема со сравнением числовых строк, которая решена в PHP7, хотя делать так все равно не стоит, ибо сравнение числовых строк в инженерной нотации даст подобный эффект. Для сравнения строк всегда используйте строгое сравнение, в вышеуказанном примере с in_array, используйте последний аргумент $strict = true.
  4. Стоит отметить, что для отображения опкодов 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
  5. Ну и раз уж мы часто упоминаем PHP 7, стоит напомнить, что в конце этого года заканчивается срок жизни PHP 5.6 и пора обновляться до семерки. Поможет в этом вопросе PHP 7 Migration Assistent Report.
  6. Недавно запустился очень клёвый ресурс phpinternals.net. На нем собрано много информации по внутренностям PHP.
  7. На PHP Internals также есть ссылки на другие полезные ресурсы, например, why can't we have nice things (конкретно эта ссылка — на rfc про поддержку шестнадцатеричных значений в числовых строках, о которых было сказано ранее). Данный ресурс показывает PHP RFC в более удобоваримом виде.
  8. Ну и раз уж мы заговорили про RFC, тот вот rfc на тему удаления backtick оператора в php. Про backtick оператор особо никто и не знает, а теперь видимо и не придется знать.
  9. Еще на github есть репозиторий с бекдорами для PHP. Может быть интересно в исследовательских целях.
  10. И, наконец, последняя, но важная ссылка Learning OOP in PHP.

Предыдущий дайджест: Микро-толки — дайджест #8