ideade/typed-collections

0.1.0 2024-03-05 21:15 UTC

This package is auto-updated.

Last update: 2024-09-18 03:17:51 UTC


README

安装

composer require ideade/typed-collections:^0.1

支持类型

  • 标量:bool, int, float, string ✅
  • 您的任何类 ✅
  • 资源(包括已关闭的),数组 ❌

待办事项

添加测试。目前最新的phpunit与psalm冲突,因为它们使用的nikic/php-parser版本不同

示例

// User.php

...

final readonly class User
{   
    public function __construct(
        public string $id,
        public string $login,
        public string $email
    ) {}
}

// UserCollection.php

...

use Ideade\TypedCollections\TypedCollection;

class UserCollection extends TypedCollection
{
    protected function valueType() {
        return User::class;
    }
}

// SomeRepository.php

...

class UserRepository
{
    ...

    public function findAllUsers(): UserCollection
    {
        $users = new UserCollection();
        
        ...
        
        foreach ($sourceUsers as $sourceUser) {
            $users
                ->add(
                    new User(
                        $sourceUser['id'],
                        $sourceUser['login'],
                        $sourceUser['email']
                    )
                )
        }

        return $users;
    }

    ...
}