我使用哪个提供程序来绑定 laravel 5 中的数据库存储库


Which provider do I use to bind my database repositories in laravel 5?

我正在使用laravel 5,我是新手开发人员,所以我刚刚学会了如何使用存储库模式。现在作为新手,我首先使用 routes.php 文件将我的UserRepositoryInterface绑定到DbUserRepository,如下所示:

App::bind('UserRepositoryInterface', 'DbUserRepository');

这只是伪装,也用上面的代码对命名空间进行图像处理。

因此,在此之后,我意识到有一种称为服务提供商的东西应该包含这样的代码。现在我在Providers文件夹中的AppServiceProvider中重构了它,它仍然工作正常。

但是,由于我将拥有更多的存储库,将它们放入AppServiceProvider中是一个好主意,还是应该继续为我的存储库创建一个专用的提供程序并将它们绑定在那里?最好的方法是什么?这有标准吗?

所以后来我明白了这一切都与偏好有关,所以我编写了一个RepositoryServiceProvider,其中我将所有存储库合约绑定到所需的实现,如下所示:

<?php
namespace App'Providers;
use Illuminate'Support'ServiceProvider;
use Archive'Repositories'TenantRepository;
use Archive'Repositories'TenantRepositoryEloquent;
use Archive'Repositories'UserRepository;
use Archive'Repositories'UserRepositoryEloquent;
use Archive'Repositories'OrderRepository;
use Archive'Repositories'OrderRepositoryEloquent;
class RepositoryServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(TenantRepository::class, TenantRepositoryEloquent::class);
        $this->app->bind(UserRepository::class, UserRepositoryEloquent::class);
        $this->app->bind(OrderRepository::class, OrderRepositoryEloquent::class);
    }
}