https://github.com/WPLake/PHP-Typed PHP-Typed — это легковесная PHP-библиотека (утилита), созданная для безопасного и удобного приведения типов при работе с динамическими данными, такими как массивы и объекты.
- Безопасная работа с данными: Позволяет извлекать значения из многомерных массивов или объектов и сразу приводить их к нужному типу (int, string, bool и т.д.), избегая ошибок при отсутствии ключей или неверном формате.
- Упрощение кода: Вместо громоздких проверок через isset(), is_array() и ручного приведения типов, вы используете одну короткую функцию.
- Поддержка «dot notation»: Позволяет обращаться к глубоко вложенным элементам массивов через точку, например: 'user.profile.id' Вот так код выглядит без библиотеки: function getUserAge(array $userData): int { return isset($userData['meta']['age']) && is_numeric($userData['meta']['age']) ? (int) $userData['meta']['age'] : 0; }
function upgradeUserById($mixedUserId): void { $userId = is_string($mixedUserId) || is_numeric($mixedUserId) ? (string) $mixedUserId : ''; }
function setUserEducation(array $user, string $education): array { // such long chain is the only safe way passing PHPStan checks. if(key_exists('data', $userData) && is_array($userData['data']) && key_exists('bio', $userData['data']) && is_array($userData['data']['bio'])) { $userData['data']['bio']['education'] = $education; }
return $userData; } А вот так с библиотекой: use function WPLakeTypedint; use function WPLakeTypedstring;
function getUserAge(array $userData): int { return int($userData, 'meta.age'); }
function upgradeUserById($mixedUserId): void { $userId = string($mixedUserId); }
function setUserEducation(array $userData, string $education): array { // will set only if 'data' and 'bio' keys are present. $isSet = setItem($userData, 'data.bio.education', $education);
return $userData; }