1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
<?php
// phpcs:disable
declare(strict_types=1);
namespace Ramsey\Collection\Test\types;
use DateTimeImmutable;
use Ramsey\Collection\GenericArray;
use Ramsey\Collection\Test\Mock\IntegerArray;
use Ramsey\Collection\Test\Mock\MyArray;
use Ramsey\Collection\Test\Mock\StringArray;
use stdClass;
use function PHPStan\Testing\assertType;
$genericArray = new GenericArray(['foo', 123, true, null, new stdClass(), new DateTimeImmutable()]);
assertType('mixed', $genericArray[0]);
assertType('mixed', $genericArray[1]);
assertType('mixed', $genericArray[2]);
assertType('mixed', $genericArray[3]);
assertType('mixed', $genericArray[4]);
assertType('mixed', $genericArray[5]);
assertType('mixed', $genericArray->offsetGet(0));
assertType('array', $genericArray->toArray());
assertType('array', $genericArray->__serialize());
assertType('Traversable<(int|string), mixed>', $genericArray->getIterator());
/** @psalm-var mixed $value */
foreach ($genericArray as $value) {
assertType('mixed', $value);
}
$stringArray = new StringArray(['foo', 'bar', 'baz']);
assertType('string', $stringArray[0]);
assertType('string', $stringArray[1]);
assertType('string', $stringArray[2]);
assertType('string', $stringArray->offsetGet(0));
assertType('array<string>', $stringArray->toArray());
assertType('array<string>', $stringArray->__serialize());
assertType('Traversable<(int|string), string>', $stringArray->getIterator());
foreach ($stringArray as $value) {
assertType('string', $value);
}
$integerArray = new IntegerArray([42, 56, 78]);
assertType('int', $integerArray[0]);
assertType('int', $integerArray[1]);
assertType('int', $integerArray[2]);
assertType('int', $integerArray->offsetGet(0));
assertType('array<int>', $integerArray->toArray());
assertType('array<int>', $integerArray->__serialize());
assertType('Traversable<(int|string), int>', $integerArray->getIterator());
foreach ($integerArray as $value) {
assertType('int', $value);
}
/** @var MyArray<array{id: int, name: string, date: DateTimeImmutable}> $myArray */
$myArray = new MyArray([
[
'id' => 1234,
'name' => 'Samwise Gamgee',
'date' => new DateTimeImmutable(),
],
]);
assertType('array{id: int, name: string, date: DateTimeImmutable}', $myArray[0]);
assertType('array{id: int, name: string, date: DateTimeImmutable}', $myArray->offsetGet(0));
assertType('int', $myArray[0]['id']);
assertType('string', $myArray[0]['name']);
assertType(DateTimeImmutable::class, $myArray[0]['date']);
assertType('array<array{id: int, name: string, date: DateTimeImmutable}>', $myArray->toArray());
assertType('array<array{id: int, name: string, date: DateTimeImmutable}>', $myArray->__serialize());
assertType('Traversable<(int|string), array{id: int, name: string, date: DateTimeImmutable}>', $myArray->getIterator());
foreach ($myArray as $value) {
assertType('array{id: int, name: string, date: DateTimeImmutable}', $value);
}
|