Сегодня в официальной документации 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. Так что предложить исправление не сложнее, чем пофиксить ошибку в своем коде.
Комментарии (13)
evgeniy_kudinov
03.12.2024 18:23Забавно. Это получается фронтенд можно на PHP делать, и скоро фреймворк для фронта появится? Пока php-wasm версия v0.0.9-alpha.
liaf4_4
03.12.2024 18:23Да и бэкенд в браузере необычно…
Браузерный nginx. С MySQL.
Sanchous98
03.12.2024 18:23Ну nginx точно не нужен, коли мы уже в браузере. А вот Mysql в браузере это сильно)
YegorP
03.12.2024 18:23В экосистеме .NET такой фиче уже сто лет в обед (Blazor), но что-то крупные игроки не спешат её использовать.
supercat1337
03.12.2024 18:23Приятно удивлен. Молодцы. Ещё бы веб-сокеты добавили бы и тогда будет супер.
Sanchous98
03.12.2024 18:23А какие у вас сейчас проблемы с вебсокетами? Они есть вообще-то, на ReactPHP можете построить долгоживущее приложение для работы с вебсокетами
supercat1337
03.12.2024 18:23То есть для этого уже не нужен отдельный сервер PHP (в пример беру swoole)? Если так, то супер)
AleksandrTm
03.12.2024 18:23что значит отдельный сервер swoole, swoole лишь расширение для php
а как вы без сервера php хотите работать с ws? =)
supercat1337
03.12.2024 18:23Хочу, чтобы все сразу было) Ну, хотелка у меня такая. Мечтать не вредно же?)
rozhnev
Кстати нужно PHP 8.4 добавить phpize.online