olegv / brick
Инструмент для создания строго типизированных UI-компонентов на PHP
Installs: 76
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/olegv/brick
Requires
- php: >=8.2
- ext-mbstring: *
- psr/simple-cache: ^3.0
Requires (Dev)
- phpstan/phpstan: ^2.1.33
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/phpunit: ^11.5
This package is auto-updated.
Last update: 2026-02-08 14:34:10 UTC
README
Внимание! Эта библиотека является экспериментальной и предназначена для исследовательских целей.
Brick — инструмент для создания строго типизированных UI-компонентов на PHP. Каждый компонент — это иммутабельный readonly PHP-класс, который автоматически связывается со своим HTML-шаблоном, CSS-стилями и JavaScript-кодом.
Ключевые особенности
- Иммутабельные компоненты (
Brick):readonlyклассы, которые не меняются после создания. - Автоматическое обнаружение файлов: Brick сам находит
template.php,style.css,script.jsв папке компонента. - Централизованное управление (
BrickManager): Кэширование метаданных компонентов, рендеринг CSS/JS. - Модульность через трейты: Добавляйте кэширование (
WithCache), хелперы (WithHelpers) и другие возможности. - Безопасность по умолчанию: Автоматическое экранирование HTML, защита от XSS.
Рекомендации по использованию
- Делайте композицию компонентов только через
echoили приведение к строке - Оставьте конструктор пустым
- Подготовку данных выполняйте в
prepare()- он автоматически срабатывает перед подключением шаблона - Используйте простые типы данных —
string,int,float,bool,arrayиnull
Быстрый старт
Установка
composer require olegv/brick
Минимальный пример
<?php // HelloWorld/HelloWorld.php declare(strict_types=1); namespace PSR4Path\HelloWorld; readonly class HelloWorld extends \OlegV\Brick { public function __construct(public string $name) { } }
<?php //HelloWorld/template.php declare(strict_types=1); use PSR4Path\HelloWorld\HelloWorld; /** @var HelloWorld $this */ ?> <!-- HelloWorld/template.php --> <h1>Hello, <?= $this->e($this->name) ?>!</h1>
<?php // Использование require_once 'vendor/autoload.php'; echo new HelloWorld('World'); echo \OlegV\BrickManager::getInstance()->renderAssets();