Simple PHP view renderer for the PhpSoftBox framework

Maintainers

Package info

github.com/phpsoftbox/view

pkg:composer/phpsoftbox/view

Statistics

Installs: 66

Dependents: 3

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master 2026-03-05 11:42 UTC

This package is auto-updated.

Last update: 2026-03-05 11:42:27 UTC


README

Простой PHP‑рендерер шаблонов. Используется как универсальный viewer для страниц ошибок и для Inertia (через адаптер).

Оглавление

About

PhpSoftBox\View\PhpViewRenderer рендерит PHP‑шаблоны с данными, поддерживает базовый путь и общий набор данных, который добавляется в каждый шаблон.

Quick Start

use PhpSoftBox\View\PhpViewRenderer;

$renderer = new PhpViewRenderer(
    basePath: __DIR__ . '/resources/views',
    sharedData: [
        'appName' => 'AppName',
    ],
);

echo $renderer->render('error.php', [
    'status' => 500,
    'message' => 'Ошибка сервера',
]);

Шаблоны

Шаблон — это обычный PHP/PHTML‑файл. Данные передаются как переменные.

/** @var string $message */
/** @var int $status */
?>
<h1><?= $status ?></h1>
<p><?= html($message) ?></p>

DTO-шаблоны

Можно передавать в render() не только массив, но и объект DTO. Тогда внутри шаблона $this — сам DTO:

final readonly class EmailConfirmView
{
    public function __construct(
        public int $status,
        public string $message,
    ) {
    }
}

$dto = new EmailConfirmView(200, 'Email подтвержден');
echo $renderer->render('email-confirm.phtml', $dto);

Шаблон:

<?php
/** @var EmailConfirmView $this */
?>
<h1><?= $this->status ?></h1>
<p><?= html($this->message) ?></p>

Helpers

В шаблонах доступны глобальные helper-функции:

  • html(mixed $value): string — экранирование вывода.
  • raw(mixed $value): string — явный неэкранированный вывод для доверенного HTML.

Общие данные

Общие данные добавляются ко всем шаблонам и переопределяются локальными:

$renderer = new PhpViewRenderer(
    basePath: __DIR__ . '/resources/views',
    sharedData: [
        'vite' => $vite,
    ],
);

echo $renderer->render('app.php', [
    'page' => $page,
    'rootId' => 'app',
]);