Skip to content

Latest commit

 

History

History
80 lines (65 loc) · 2.51 KB

README.md

File metadata and controls

80 lines (65 loc) · 2.51 KB

Types

Build status Code coverage Latest version Downloads total License

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.