fimaruf / laravel-repositories
Laravel 5+ 的仓库层
1.5.0
2017-04-06 16:14 UTC
Requires
- laravel/framework: ^5.3
- league/fractal: ^0.15.0
Requires (Dev)
- fzaninotto/faker: ~1.4
- mockery/mockery: dev-master
- phpunit/phpunit: ^5.6
README
使用 Laravel 框架的仓库
设置
本包通过 Laravel 容器进行依赖注入,将仓库注入到控制器或其他可能需要它们的类中。
注册服务提供者
将服务提供者添加到应用配置的 'providers' 部分。
'providers' => [
...
CroudTech\Repositories\Providers\RepositoryServiceProvider::class,
...
],
如下将仓库定义添加到资源配置文件中
<?php
use \CroudTech\Repositories\TestApp\Repositories\Contracts\UserRepositoryContract;
use \CroudTech\Repositories\TestApp\Repositories\UserRepository;
use \CroudTech\Repositories\TestApp\Repositories\UserApiRepository;
use \CroudTech\Repositories\TestApp\Transformers\UserTransformer;
use \CroudTech\Repositories\TestApp\Controllers\UserController;
use \CroudTech\Repositories\TestApp\Controllers\UserApiController;
return [
'repositories' => [
UserRepositoryContract::class => UserRepository::class,
],
'repository_transformers' => [
UserRepository::class => UserTransformer::class,
UserApiRepository::class => UserTransformer::class,
],
'contextual_repositories' => [
UserController::class => UserRepositoryContract::class,
UserApiController::class => UserApiRepository::class,
],
];
'repositories' 定义了每个仓库合约的具体实现。
'repository_transformers' 定义了应该注入到每个仓库中的转换器类。
'contextual_repositories' 定义了上下文仓库。这在不同控制器需要同一合约的不同实现时很有用。
要指定控制器所需的仓库,只需将其合约或类名添加到控制器的构造方法中。
例如,要将 UserRespsitory 注入到 UserController 中
<?php
namespace App\Controllers;
use \CroudTech\Repositories\TestApp\Repositories\Contracts\UserRepositoryContract;
class UserController extends Controller
{
protected $repository;
public function __construct(UserRepositoryContract $user_repository)
{
$this->repository = $user_repository;
}
}