Skip to content

ngmy/php-typed-array

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1596c7a · May 7, 2021
Apr 22, 2021
Apr 22, 2021
Apr 22, 2021
May 7, 2021
Apr 3, 2021
Apr 3, 2021
Feb 16, 2021
Apr 3, 2021
Apr 3, 2021
Feb 16, 2021
Feb 16, 2021
Feb 16, 2021
Apr 22, 2021
Feb 16, 2021
Apr 3, 2021
Feb 15, 2021
Mar 30, 2021
Apr 22, 2021
Feb 16, 2021
Feb 16, 2021
Feb 26, 2021
Feb 16, 2021
Feb 16, 2021
Mar 29, 2021

Repository files navigation

PHP Typed Array

Latest Stable Version Total Downloads Latest Unstable Version License composer.lock PHP CI Coverage Status PHPStan Psalm Coverage Psalm Level

PHP Typed Array is the typed array for PHP.

  • Can create the typed array with the specified key and value type
  • Can specify the bool, float, int, object, resource, or string type, or the specified class type, or the class type that implements the specified interface, or the class type that uses the specified trait for the key type
  • Can specify the array, bool, float, int, object, resource, or string type, or the specified class type, or the class type that implements the specified interface, or the class type that uses the specified trait for the value type
  • Implements the ArrayAccess, Countable, and IteratorAggregate interfaces
  • Supports the static analysis like PHPStan and Psalm. Please see examples
// Returns a new instance of the typed array with the int type value
$intArray = Ngmy\TypedArray\TypedArray::new()->withIntValue(); // TypedArray<mixed, int>

$intArray[] = 1;      // Good
// $intArray[] = '2'; // No good. The InvalidArgumentException exception is thrown

// Returns a new instance of the typed array with the class type value that implements the DateTimeInterface interface
$dateTimeInterfaceArray = Ngmy\TypedArray\TypedArray::new()
    ->withInterfaceValue(DateTimeInterface::class); // TypedArray<mixed, DateTimeInterface>

$dateTimeInterfaceArray[] = new DateTime();          // Good
$dateTimeInterfaceArray[] = new DateTimeImmutable(); // Good
// $dateTimeInterfaceArray[] = new stdClass();       // No good. The InvalidArgumentException exception is thrown

foreach ($dateTimeInterfaceArray as $dateTime) {
    echo $dateTime->format('Y-m-d H:i:s') . PHP_EOL;
}

// Determines if the typed array is empty or not
echo var_export($dateTimeInterfaceArray->isEmpty(), true) . PHP_EOL; // false

// Gets the typed array of items as a plain array
print_r($dateTimeInterfaceArray->toArray());
// Array
// (
//     [0] => DateTime Object
//         ...
//     [1] => DateTimeImmutable Object
//         ...
// )

// You can also specify the type of the key
$stringKeyArray = Ngmy\TypedArray\TypedArray::new()->withStringKey(); // TypedArray<string, mixed>
$stringKeyArray['foo'] = 1; // Good
// $stringKeyArray[] = 2;   // No good. The InvalidArgumentException exception is thrown

// Of course, you can also specify the type of both the key and the value
$intStringArray = Ngmy\TypedArray\TypedArray::new()->withIntKey()->withStringValue(); // TypedArray<int, string>

Requirements

PHP Typed Array has the following requirements:

  • PHP >= 7.3

Installation

Execute the Composer require command:

composer require ngmy/typed-array

Documentation

Please see the API documentation.

License

PHP Typed Array is open-sourced software licensed under the MIT license.

About

The typed array for PHP

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published