PSR — API
Все перечисленные namespaces имеют префикс localzet\PSR\.
Контейнер
Заголовок раздела «Контейнер»Container\ContainerInterface:
| Метод | Контракт |
|---|---|
get(string $id) | Получить значение; отсутствующая запись обозначается исключением NotFoundExceptionInterface. |
has(string $id): bool | Проверить наличие; true не обещает, что создание записи не завершится другой ошибкой. |
ContainerExceptionInterface — общий тип ошибок контейнера; NotFoundExceptionInterface наследует его. Конкретные классы исключений и правила создания зависимостей пакет не предоставляет.
Логирование
Заголовок раздела «Логирование»Log\LoggerInterface объявляет восемь методов уровней и log($level, string|Stringable $message, array $context = []): void.
LogLevel содержит строковые константы уровней. AbstractLogger и LoggerTrait делегируют level-specific вызовы в log(). NullLogger принимает и игнорирует запись. LoggerAwareInterface/LoggerAwareTrait позволяют установить logger через setLogger().
Перечисление уровня не заменяет проверку произвольного значения $level в пользовательской реализации. Тип Log\InvalidArgumentException — интерфейс для соответствующей ошибки, а не создаваемый через new класс.
Простой кэш
Заголовок раздела «Простой кэш»SimpleCache\CacheInterface:
| Методы | Назначение |
|---|---|
get($key, $default = null) | Чтение с заданным default при промахе. |
set($key, $value, $ttl = null) | Сохранение с TTL. |
delete($key), clear() | Удаление записи либо всего кэша. |
getMultiple($keys, $default) | Чтение набора ключей. |
setMultiple($values, $ttl) | Сохранение набора пар ключ/значение. |
deleteMultiple($keys) | Удаление набора. |
has($key) | Проверка наличия, не защита от последующей конкурентной модификации. |
Ключи — строки, групповые аргументы — iterable; TTL имеет тип null|int|DateInterval. Интерфейс задаёт сигнатуры и требования, но не хранит данные. Ошибки обозначаются CacheException и InvalidArgumentException этой группы.
Кэш с объектами элементов
Заголовок раздела «Кэш с объектами элементов»Cache\CacheItemInterface предоставляет getKey(), get(), isHit(), set(), expiresAt() и expiresAfter(). Проверяйте isHit(), чтобы отличить промах от сохранённого null.
Cache\CacheItemPoolInterface предоставляет:
- чтение:
getItem(),getItems(),hasItem(); - удаление:
deleteItem(),deleteItems(),clear(); - сохранение:
save(),saveDeferred(),commit().
saveDeferred() и commit() относятся к контракту отложенной записи пула, а не к произвольной транзакции базы данных. Семантику долговечности определяет выбранный backend.
HTTP-сообщения и потоки
Заголовок раздела «HTTP-сообщения и потоки»Интерфейс в Http\Message | Содержимое |
|---|---|
MessageInterface | Версия протокола, заголовки и body-stream. |
RequestInterface | Метод, request target, URI и наследуемые данные сообщения. |
ServerRequestInterface | Server/query/cookie params, parsed body, uploads и attributes. |
ResponseInterface | Status code и reason phrase. |
StreamInterface | Чтение/запись, позиция, seek, размер, EOF, metadata, close/detach. |
UriInterface | Компоненты URI и методы изменения. |
UploadedFileInterface | Stream, перемещение upload, размер, ошибка и клиентские metadata. |
Фабрики находятся в двух отдельных namespaces: Http\Message\*FactoryInterface и Http\Message\Factories\*FactoryInterface. Это разные интерфейсы, несмотря на сходные методы. Выберите вариант, ожидаемый вашим вызывающим компонентом.
Фабрики объявляют создание request, server request, response, stream, uploaded file и URI. Пакет содержит только interfaces, готовых HTTP-объектов или server adapter здесь нет.
HTTP-клиент и обработчики
Заголовок раздела «HTTP-клиент и обработчики»Http\Client\ClientInterface::sendRequest() принимает локальный RequestInterface и возвращает локальный ResponseInterface. Ошибки клиента представлены ClientExceptionInterface; сетевые и связанные с запросом ошибки — NetworkExceptionInterface и RequestExceptionInterface.
Http\Server\RequestHandlerInterface::handle() возвращает ответ для входящего локального server request. MiddlewareInterface::process() принимает request и следующий handler. Pipeline и обработка исключений задаются приложением.
События
Заголовок раздела «События»Интерфейс в EventDispatcher | Метод |
|---|---|
EventDispatcherInterface | dispatch(object $event) |
ListenerProviderInterface | getListenersForEvent(object $event): iterable |
StoppableEventInterface | isPropagationStopped(): bool |
Это контракт объектных событий. Он не является интерфейсом статического строкового диспетчера localzet\Events: тот не реализует эти типы автоматически.
Link\LinkInterface описывает href, признак template, rel и attributes. EvolvableLinkInterface добавляет методы изменения. LinkProviderInterface отдаёт все ссылки либо ссылки заданного rel; EvolvableLinkProviderInterface добавляет изменение коллекции. Формирование HTML и разрешение template-значений в пакет не входят.
Clock\ClockInterface::now(): DateTimeImmutable возвращает время выбранного реализацией clock. Системные часы, timezone и фиксированные тестовые часы — разные реализации одного контракта.