Обзор API
Эта страница отображает каждый @api-тип в src/ — фактический публичный контракт, взятый проходом рефлексии (docs/scripts/reflect-api.php), а не то, что случайно упомянуто в README. Каждое имя класса ссылается на сгенерированную справочную страницу (docs/scripts/generate-api.mjs) с его публичными свойствами и сигнатурами методов из того же прохода рефлексии.
С чего начать
| Тип | Роль |
|---|---|
Property | Атрибут #[Property] — runs, seed, generators, maxShrinks, examples, maxDiscards, timeoutMs, budgetMs. |
Gen | Статическая фабрика всех встроенных генераторов — см. обзор генераторов. |
Assume | Assume::that(bool) — отбросить текущую попытку. |
ArbitraryInterface | Реализуйте его для своего генератора. |
Shrinkable | Значение + ленивое shrink-дерево — leaf(), of(), map(). См. Shrinking. |
CounterExample | Данные фальсифицированного прогона — toArray(), toJson(), toExamplesCode(). |
Classify | label(), when(), cover() — см. Распределение. |
Stateful-тестирование
| Тип | Роль |
|---|---|
Command | Интерфейс: preCondition/nextState/run/postCondition + \Stringable. |
CommandSequence | Сгенерированная, shrink'уемая последовательность команд. |
StateMachine | StateMachine::check() — прогоняет последовательность против свежей системы. |
Падения
Каждое исключение пакета с фактическими readonly-полями и геттерами (не просто упоминание по имени): справочник исключений.
Публичное, но не то, с чего начинают
Два @api-члена существуют для более узкого, продвинутого применения, чем «написать #[Property]-тест»:
Random::__construct(int $seed)— ручное построениеRandomдля проверки собственногоArbitraryInterfaceв изоляции, вне запущенного property. Внутри propertyRandomвсегда инжектируется раннером.Classify::beginRun()/flushRun()/flushRequirements()— runner-lifecycle-хуки, которыеPropertyInterceptorвызывает для сброса и слива буфера распределения текущего прогона. Публичны потому что интерцептор живёт в другом namespace (Internal\), а не потому что тестовый код должен их вызывать.
AssumptionSkipped намеренно отсутствует на этой карте — он публичный, но не @api; см. заметку внизу справочника исключений.
Эта страница и Исключения сверяются со снимком рефлексии src/, а не поддерживаются по памяти — см. issue #29, какие пробелы это закрыло.