Онлайн-пісочниця зі справжнім PHP від 8.0 до 8.5 прямо в браузері. Пишіть код, запускайте й порівнюйте, як він поводиться в різних версіях.
У БРАУЗЕРІWEBASSEMBLY
main.php
ПОМИЛКИ
<?
PHP 8.5 ще не завантажений
Інтерпретатор завантажиться при першому запуску. Далі він лежить у кеші браузера, тож наступні запуски миттєві.
Виконується…
Не вдалося завантажити PHP
Схоже, зник інтернет або файл інтерпретатора заблокував мережевий фільтр. Ваш код збережено в редакторі, нічого не втрачено.
Порівняння в PHP 8.3, 8.4 і 8.5
STDOUT
Скрипт нічого не вивів.
ПОРІВНЯННЯ
// ЩО НОВОГО
Що нового в PHP 8.x
Головне з кожної версії. Натисніть на картку: редактор перемкнеться на потрібну версію й підставить приклад. Усі зміни з датами підтримки зібрані на сторінці версій PHP.
// ЯК ЦЕ ПРАЦЮЄ
Справжній PHP, а не імітація
Це офіційний інтерпретатор PHP, скомпільований у WebAssembly. Браузер завантажує його один раз і виконує ваш код у себе, як локальна програма. Тому поведінка, повідомлення про помилки й функції стандартної бібліотеки ті самі, що на сервері.
На наш сервер нічого не відправляється. Ні код, ні результат, ні дані, які ви вставили в редактор. Посилання «Поділитися» зберігає код у самій адресі, тому його бачить лише той, кому ви його надіслали.
// ОБМЕЖЕННЯ
Чого тут немає
✕Мережі. curl, file_get_contents з URL і сокети не працюють: браузер не дає програмі виходити в інтернет.
✕Бази даних. Підключитися до MySQL чи PostgreSQL не вийде з тієї ж причини.
✕Composer-пакетів. Доступні вбудовані функції й класи PHP, але не сторонні бібліотеки.
✕Частини розширень. mbstring, intl, dom, gd і curl у браузерну збірку не входять.
✕Файлів між запусками. Файлова система тимчасова і очищується після кожного запуску.
// ПИТАННЯ
Що питають про PHP онлайн
Це справжній PHP чи імітація?
Справжній. Офіційний інтерпретатор PHP скомпільований у WebAssembly і працює у вашому браузері так само, як на сервері. Тому повідомлення про помилки, поведінка функцій і відмінності між версіями збігаються з тим, що ви побачите в продакшені.
Куди потрапляє мій код?
Нікуди. Він виконується на вашому пристрої, а на сервер phpukraine.com не відправляється ні код, ні результат. Якщо натиснути «Поділитися», код записується в саме посилання, тож його побачить лише той, кому ви це посилання надішлете.
Чому перший запуск повільний?
Браузер завантажує інтерпретатор, кілька мегабайтів на версію. Це відбувається один раз, далі файл береться з кешу, і запуск займає мілісекунди. Для порівняння версій додатково завантажуються ті з них, яких ще немає в кеші.
Чим відрізняються версії PHP?
Кожна версія додає синтаксис і функції. Наприклад, enum зʼявився у 8.1, property hooks у 8.4, pipe-оператор у 8.5. Якщо запустити код із новішою можливістю у старішій версії, ви побачите помилку парсера і підказку, у якій версії це зʼявилося.
Чому не працюють mb_strtoupper() чи DOMDocument?
У браузерній збірці PHP лише базові розширення: стандартна бібліотека, SPL, json, date, pcre, bcmath, ctype, Reflection і ще кілька. mbstring, intl, dom, gd і curl сюди не входять, тому їхні функції й класи дають «Call to undefined function» або «Class not found».
Чи можна підключити Composer-пакет або базу даних?
Ні. Інтерпретатор у браузері не має доступу до мережі, тому не може завантажити пакет чи підключитися до бази. Для таких задач потрібне локальне середовище або Docker.
Чому результат може трохи відрізнятися від мого сервера?
На сервері можуть бути інші розширення, налаштування php.ini, таймзона чи локаль. Тут типові налаштування й таймзона UTC. Якщо поведінка залежить від середовища, перевірте її ще й локально.