Screen — це термінальний рендерер, написаний на чистому PHP

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 08 квітня, 2025
Вас цікавить, як створити багатий текстовий інтерфейс у PHP-застосунках? Долучайтеся до світу Screen — потужного термінального рендерера, написаного на чистому PHP, який відкриває нові можливості для роботи з текстом та ANSI-кодами. Читайте статтю, щоб дізнатися більше про його можливості і про те, як легко його інтегрувати у свій проект

Screen — це термінальний рендерер, створений Аароном Френсісом, написаний на чистому PHP. Він функціонує як основа для Solo for Laravel і може використовуватися для створення багатих текстових інтерфейсів у будь-якому PHP-додатку. Зверніть увагу, що це не самостійний термінальний додаток і не слід плутати з GNU Screen, що використовується в Linux.

Що таке термінальний рендерер? Це інструмент, який обробляє текст та ANSI escape-послідовності для створення віртуального відображення термінального виходу. Він інтерпретує escape-послідовності, щоб відстежувати позицію курсора, застосовувати форматування тексту та керувати вмістом екрану.

Screen, відповідно, забезпечує безпечне інтерпретування ANSI операцій в ізольованому середовищі, гарантуючи правильне відображення термінального виходу в визначених областях.

# Особливості

# Приклад

use SoloTerm\Screen\Screen;
 
// Створити екран з розмірами (стовпці, рядки)
$screen = new Screen(80, 24);
 
// Провести кордон
$screen->write("┌" . str_repeat("─", 78) . "┐\n");
for ($i = 0; $i < 6; $i++) {
    $screen->write("│" . str_repeat(" ", 78) . "│\n");
}
$screen->write("└" . str_repeat("─", 78) . "┘");
 
// Записати текст та ANSI escape-послідовності
$screen->write("\e[3;25HПривіт, \e[1;31mСпільнота Laravel News!\e[0m");
 
// Змінити курсор та додати ще тексту
$screen->write("\e[5;30HВи чудові! 🎉");
 
// Отримати рендерений вміст
echo $screen->output();

Результат виглядатиме наступним чином:

Встановіть цей пакет через Composer:

composer require soloterm/screen

Дізнайтеся більше про цей пакет та перегляньте вихідний код на GitHub.