В документации PHP теперь можно выполнять примеры кода прямо на странице
Сегодня в официальной документации PHP над каждым примером кода появилась кнопочка Run code
, которая позволяет выполнить его и сразу увидеть результат. При этом код в примерах можно редактировать, что позволяет экспериментировать с ним или адаптировать под свою задачу. К примеру, в функцию crc32() можно подставить своё значение и получить контрольную сумму.
Данная функциональность пока работает в тестовом режиме и имеет скорее статус демонстратора возможностей. Наверняка будет выявлено и исправлено множество багов. Но сам факт не может не радовать, такой функционал очень удобен. В планах добавление возможности выполнять код для разных версий PHP.
Фича реализована с помощью технологии WebAssembly (WASM). То есть, в отличие большинства онлайн-песочниц, которые отправляют код для выполнения на сервер, здесь выполнение происходит прямо в браузере. При запуске примера загружается 4-мегабайтный файл php-web.wasm, который и содержит интерпретатор РНР. Одним из очевидных преимуществ такого подхода является полное отсутствие проблем с безопасностью и производительностью сервера — ведь весь код выполняется в браузере пользователя!
Уже довольно давно этот подход использовался в популярной песочнице 3v4l.org в режиме live preview, так что это был только вопрос времени (и наличия энтузиаста, который предложит пулл-реквест).
Понятное дело, что примеры, которым нужна инфраструктура, работать не будут. Тут всё ещё придётся использовать либо локальный сервер, либо сторонние песочницы, такие как например https://phpize.online/, которую разработал и поддерживает Слава @rozhnev, и которая предоставляет уникальную интеграцию со всеми популярными БД.
Кроме того, поддерживается только функционал, включённый в ядро, без модулей. К примеру, не работают примеры для расширения mbstring (впрочем, там почему-то и самих примеров-то почти нет). Но для большинства стандартных функций примеры работают. Например, для недавно добавленной array_find.
Надо сказать, что многие примеры не адаптированы к живому исполнению и попросту выдают ошибку, поскольку не содержат необходимый контекст. Особенно забавно при этом выглядит страница с примерами использования перечислений, на которой первые два примера вообще ничего не выводят, а третий выдаёт ошибку, поскольку требует код из предыдущего примера.
Но такие проблемы как раз легко исправимы, благодаря ещё одному недавнему улучшению: внизу каждой страницы есть ссылка Submit a Pull Request, которая ведёт на исходник страницы в официальном репозитории документации на Github. Так что предложить исправление не сложнее, чем пофиксить ошибку в своем коде.