san4io / repository
可重用的 Laravel 仓库接口。
v3.1.1
2017-06-01 17:38 UTC
Requires
- php: >=5.6.4
- illuminate/config: 5.4.*
- illuminate/support: 5.4.*
README
入门指南
介绍
Caffeinated Repository 包允许实现标准样板仓库接口的方法。这包括直接从盒子里提供的非静态、非门面驱动的 Eloquent 方法。但别担心,Batman!Caffeinated Repository 包在自定义(例如重写)提供的接口或添加自己的方法时不会限制您。
安装 Caffeinated Repository
建议您使用 Composer 安装此包。
composer require caffeinated/repository
此包符合 PSR-1、PSR-2 和 PSR-4 标准。如果您发现任何不符合之处,请通过 pull request 发送补丁。
使用仓库
创建模型
创建您的模型,就像您通常所做的那样。我们将把我们的仓库包裹在我们的模型周围,以便访问和查询数据库以获取所需的信息。
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model class Book extends Model { // }
创建仓库
创建一个新的 Repository 类 - 通常这些类存储在 Repositories
目录中。每个仓库实例有一些要求
- 仓库类必须扩展 Caffeinated EloquentRepository 类。
- 仓库类必须指定一个指向模型的公共属性。
- 仓库类必须指定一个缓存标签数组。这些标签由包用于在数据库中相关值更改时自动处理缓存失效。
<?php namespace App\Repositories; use App\Models\Book; use Caffeinated\Repository\Repositories\EloquentRepository; class BookRepository extends EloquentRepository { /** * @var Model */ public $model = Book::class; /** * @var array */ public $tag = ['book']; }
注入仓库
一旦您构建和配置了仓库实例,您可以在需要的地方注入该类。
<?php namespace App\Http\Controllers; use App\Repositories\BookRepository; class BookController extends Controller { /** * @var BookRepository */ protected $book; /** * Create a new BookController instance. * * @param BookRepository $book */ public function __construct(BookRepository $book) { $this->book = $book; } /** * Display a listing of all books. * * @return Response */ public function index() { $books = $this->book->findAll(); return view('books.index', compact('books')); } }