degraciamathieu/laravel-rapid-bind

此包的最新版本(1.0.0)没有可用的许可信息。

使用注解快速轻松地在 Laravel 容器中创建单例

1.0.0 2024-06-25 06:59 UTC

This package is auto-updated.

Last update: 2024-09-03 12:51:56 UTC


README

laravel-rapid-bind

testing

在基于端口和适配器的架构中,我们在接口和实现之间创建了大量的绑定。

通常,这些绑定很简单,不需要额外的配置。

该包简化了这些绑定的创建,帮助您避免在 AppServiceProvider 中造成混乱。

安装

需要 >= PHP 8.1

composer require degraciamathieu/laravel-rapid-bind

用法

提供包含接口的文件夹信息

<?php

namespace App\Providers;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        RapidBind::bind([
            '../app/Domain/Ports/Repositories',
        ]);
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        //
    }
}

现在,在端口上添加 Bind 注解,并使用关联适配器的 FQCN 作为值

<?php

namespace App\Domain\Ports\Repositories;

use DeGraciaMathieu\RapidBind\Bind;
use App\Infrastructure\Repositories\UserRepositoryAdapter;

#[Bind(UserRepositoryAdapter::class)]
interface UserRepository
{
    //
}
<?php

namespace App\Infrastructure\Repositories;

use App\Domain\Ports\Repositories\UserRepository;

class UserRepositoryAdapter implements UserRepository
{
    //
}

从现在开始,端口和适配器之间已自动创建单例!

$userRepository = app(UserRepository::class);

dd($userRepository); // App\Infrastructure\Repositories\UserRepositoryAdapter