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

Перекладено ШІ 0 Laravel News 08 квітня, 2025

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

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

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

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

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

  • Чиста реалізація на PHP: Всюди лише одна залежність (Grapheme, інша бібліотека Solo)
  • Широка підтримка ANSI: Підтримує позиціонування курсора, стилізацію тексту та маніпуляцію екраном
  • Підтримка Unicode/Multibyte: Коректно обробляє символи UTF-8, включаючи емодзі та широкі символи
  • Управління буфером: Підтримує окремі буфери для текстового вмісту та стилізації
  • Обробка ширини символів: Вірно розраховує ширину відображення для CJK та інших символів подвійної ширини
  • Прокручування: Підтримка вертикального прокручування з належним управлінням вмістом

# Приклад

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.

Популярні

Інше, що варто прочитати

18 Оновлено 01 червня, 2026

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю

74 Оновлено 01 червня, 2026

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel

41 Оновлено 01 червня, 2026

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення