tessera-php/tessera-core
Composer 安装命令:
composer require tessera-php/tessera-core
包简介
Tessera core: interfaces, discovery service, exceptions, test cases
README 文档
README
Ядро модульной системы типов Tessera для PHP 8.1+.
Установка
composer require tessera-php/tessera-core
Содержимое пакета
Интерфейсы
TypeInterface— описание типа данных (validate, normalize)StorageAdapterInterface— стратегия хранения (toPersistence, fromPersistence, getStorageSchema)RendererInterface— стратегия отображения (render)
Сервисы
DiscoveryService— автоматическое обнаружение компонентов из установленных пакетовComponentDescriptor— метаданные зарегистрированного компонента
Исключения
ValidationException— ошибка валидации в normalize()InvalidConfigException— класс не реализует требуемый интерфейсClassNotFoundException— класс не найден
Тест-кейсы
TypeTestCase— базовый класс для тестирования типовAdapterTestCase— базовый класс для тестирования адаптеровRendererTestCase— базовый класс для тестирования рендереров
Быстрый старт
use Tessera\Core\DiscoveryService; // Инициализация с кешем $discovery = new DiscoveryService('/var/cache/tessera.php'); // Получить все типы $types = $discovery->getTypes(); // ['tessera-contract-type/email' => 'Tessera\Type\Email\EmailType', ...] // Получить адаптеры для типа $adapters = $discovery->getAdapters('tessera-contract-type/email'); // ['mysql' => [ComponentDescriptor, ...]] // Получить рендереры для типа $renderers = $discovery->getRenderers('tessera-contract-type/email'); // ['form' => [ComponentDescriptor, ...]]
Разработка типов
use Tessera\Core\TypeInterface; use Tessera\Core\Exception\ValidationException; final class MyType implements TypeInterface { public function getName(): string { return 'my-type'; } public function validate(mixed $value): bool { // Лёгкая проверка без исключений return is_string($value) && strlen($value) <= 255; } public function normalize(mixed $value): MyData { // Полная валидация с исключением при ошибке if (!$this->validate($value)) { throw new ValidationException('Invalid value'); } return new MyData($value); } }
Тестирование
use Tessera\Core\Testing\TypeTestCase; final class MyTypeTest extends TypeTestCase { protected function createType(): MyType { return new MyType(); } public static function validValues(): array { return [['hello'], ['world']]; } public static function invalidValues(): array { return [[''], [null], [123]]; } }
Требования
- PHP 8.1+
- Composer 2.0+
Лицензия
MIT
统计信息
- 总下载量: 10
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 5
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-02-22