matthiasmullie / types
Some convenient classes to describe/cast types of values
Fund package maintenance!
matthiasmullie
1.0.2
2024-05-28 03:26 UTC
Requires
- php: ^8.2
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: >=3.0
- phpunit/phpunit: >=9.0
README
Installation
Simply add a dependency on matthiasmullie/types
to your composer.json file if you use Composer to manage the dependencies of your project:
composer require matthiasmullie/types
Usage
use MatthiasMullie\Types; $type = new Types\Json( new Types\Map([ 'user_id' => new Types\Sha1( description: 'Unique user id', ), 'email' => new Types\Email( description: 'Email address of the user', ), 'gender' => new Types\Enum( ['m', 'f'], description: 'Biological sex', ), 'birthdate' => new Types\Optional( new Types\Integer(), description: 'Birth date, UNIX timestamp', ), ]), );
// this will succeed because the input is valid; // `birthdate`, given as a string, will be cast to an integer $safeInput = $type([ 'user_id' => 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd4', 'email' => 'jane.doe@example', 'gender' => 'f', 'birthdate' => '1715950172', ]);
// this will throw an exception because a required field (`gender`) // is missing; note: `$type->test(...)` can also be used to simply // check validity instead $safeInput = $type([ 'user_id' => 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd4', 'email' => 'jane.doe@example', 'birthdate' => '1715950172', ]);
// this will throw an exception because the input for `email` is not // a valid email address $safeInput = $type([ 'user_id' => 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd4', 'email' => 'not an email address', 'gender' => 'f', 'birthdate' => '1715950172', ]);
License
types is MIT licensed.