Code Monkey home page Code Monkey logo

type-guard's Introduction

Skeleton Php

GitHub Workflow Status (master) Total Downloads Latest Version License


This library is a work in progress. Please, do not use it in production.

Type Guard module is part of the Another Library, and allows you to narrow down the type of a variable to a more specific type. Using the type function, you can perform specific checks to determine the type of an object and then use that object in a way that is type-safe according to the PHPStan and Psalm static analyzers.

Here is an example, where we use the type function to narrow down the type of a variable that previously had a mixed type:

function config(): mixed;

// At compile time, the type of $apiKey is `mixed`:
$apiKey = config('api_key');

// We instruct the static analyzer that $apiKey is a `string`:
$apiKey = type($apiKey)->asString();

Here is another example, where we use the type function to narrow down the type of a variable that previously could be null. In the process, zero type information is lost:

/** @var array<int, User>|null $users */
$users = getUsers();

// Narrows down the type to `array<int, User>`
$users = type($users)->not()->null();

And one more example, where we narrow down the type of a variable to a Collection without loosing the type information:

/** @var Collection<int, User>|null $users */
$users = getUsers();

// Narrows down the type to `Collection<int, User>`
$users = type($users)->as(Collection::class);

Installation

Requires PHP 8.2+

You may use Composer to install Type Guard into your PHP project:

composer require std-library/type-guard

Usage

as

Asserts and narrows down the type of the given variable to a more specific type.

$variable = type($variable)->as(User::class);

asInt()

Asserts and narrows down the type of the given variable to an integer.

$variable = type($variable)->asInt();

asFloat()

Asserts and narrows down the type of the given variable to a float.

$variable = type($variable)->asFloat();

asString()

Asserts and narrows down the type of the given variable to a string.

$variable = type($variable)->asString();

asBool()

Asserts and narrows down the type of the given variable to a boolean.

$variable = type($variable)->asBool();

asNull()

Asserts and narrows down the type of the given variable to a null.

$variable = type($variable)->asNull();

asCallable()

Asserts and narrows down the type of the given variable to a callable.

$variable = type($variable)->asCallable();

not()->null()

Asserts and narrows down the type of the given variable to a non-null value.

$variable = type($variable)->not()->null();

asArray()

Asserts and narrows down the type of the given variable to an array.

$variable = type($variable)->asArray();

Type Guard is part of the Another Library project. It was created by Nuno Maduro and open-sourced under the MIT license.

type-guard's People

Contributors

nunomaduro avatar faissaloux avatar pascalbaljet avatar hungthai1401 avatar hermy1 avatar chapeupreto avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.