PHPackages                             tessera-php/tessera-core - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. tessera-php/tessera-core

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

tessera-php/tessera-core
========================

Tessera core: interfaces, discovery service, exceptions, test cases

010PHP

Since Feb 23Pushed 4mo agoCompare

[ Source](https://github.com/tessera-php/tessera-core)[ Packagist](https://packagist.org/packages/tessera-php/tessera-core)[ RSS](/packages/tessera-php-tessera-core/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Tessera Core
============

[](#tessera-core)

Ядро модульной системы типов 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) 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

###  Health Score

19

—

LowBetter than 9% of packages

Maintenance52

Moderate activity, may be stable

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/e78f325d4580bbfe722ff05052308109007ad43dc95ff8c07de870d843b54adc?d=identicon)[targrik](/maintainers/targrik)

---

Top Contributors

[![targrik](https://avatars.githubusercontent.com/u/6997825?v=4)](https://github.com/targrik "targrik (3 commits)")

### Embed Badge

![Health badge](/badges/tessera-php-tessera-core/health.svg)

```
[![Health](https://phpackages.com/badges/tessera-php-tessera-core/health.svg)](https://phpackages.com/packages/tessera-php-tessera-core)
```

###  Alternatives

[wp-hooks/generator

Generates a JSON representation of the WordPress actions and filters in your code

87181.8k5](/packages/wp-hooks-generator)[fof/sitemap

Generate a sitemap

1899.7k2](/packages/fof-sitemap)[dstuecken/php7ify

php7ify is a project that brings new php7 classes and exceptions to php 5.x.

11158.7k1](/packages/dstuecken-php7ify)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
