-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature TypedAccess
github-actions[bot] edited this page Jul 17, 2026
·
1 revision
Fail-safe чтение с гарантией типа: несовпадение — контрактное исключение с именем ключа, ожидаемым и фактическим типами. Ни один из пяти аналогов такого не даёт: joomla тихо кастует, остальные возвращают mixed.
-
string/int/float/bool/array— значение ровно этого типа илиTypeMismatchException; исключение —floatпринимает int (безопасное расширение). -
instanceOf($key, Some::class)— объект заданного класса/интерфейса с корректным типом возврата для статанализаторов (@return T). - Default подставляется только при отсутствии ключа: существующее значение неверного типа — всегда исключение (default не маскирует ошибку).
- Отсутствие ключа без default —
KeyNotFoundException. -
require($key)— нетипизированное обязательное значение.
use CloudCastle\Registry\Registry;
$config = new Registry(['порт' => 5432, 'лимит' => '100']);
$config->int('порт'); // 5432
$config->int('нет', 8080); // 8080 — default при отсутствии
$config->int('лимит'); // TypeMismatchException: тип string, ожидался int
$config->int('лимит', 10); // ТОЖЕ исключение — default не маскирует ошибку типа
$config->instanceOf('логгер', LoggerInterface::class); // типизированный объектЗначение «отравленное» извне (строка вместо числа из ENV, JSON или БД)
обнаруживается в момент чтения с точным сообщением — а не через три слоя
логики тихим кастом (int) '100; DROP TABLE'.
CloudCastle Registry · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)