我使用哪个提供商来绑定 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);
}
}
我正在 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);
}
}