ipunkt/laravel-repositories

此包已被废弃且不再维护。没有建议的替代包。

laravel 的基础仓库实现

2.0.0 2016-09-07 06:43 UTC

This package is auto-updated.

Last update: 2023-03-23 03:23:18 UTC


README

Latest Stable Version Latest Unstable Version License Total Downloads

安装

在 composer.json 中添加以下行

"require": {
	"ipunkt/laravel-repositories": "~2.0"
}

使用方法

仓库接口

通过提供的接口 Ipunkt\LaravelRepositories\Contracts\RepositoryInterface 扩展您的接口。

示例

use Ipunkt\LaravelRepositories\Contracts\RepositoryInterface;

interface HolidayRepository extends RepositoryInterface
{
	public function allByUser(User $user);
}

仓库类

通过提供的 Ipunkt\LaravelRepositories\EloquentRepository 扩展您的仓库类。它是一个抽象类。

您需要有一个自己的构造函数,它将内部属性 model 设置为这个仓库将要工作的适当模型。

示例

use Ipunkt\LaravelRepositories\EloquentRepository;

class EloquentHolidayRepository extends EloquentRepository implements HolidayRepository
{
	/**
	 * @param Holiday $holiday eloquent model
	 */
	public function __construct(Holiday $holiday)
	{
		$this->model = $holiday;
	}

	/** implementing all methods in HolidayRepository */
}

与服务提供者注册

您应该使用服务提供者注册所有仓库相关内容,以便在控制器中使用它。

示例

class RepositoryServiceProvider extends ServiceProvider
{
	public function register()
	{
		//  binding interface HolidayRepository to the concrete implementation of EloquentHolidayRepository
		$this->app->bind(
			'HolidayRepository',
			function () {
				return new EloquentHolidayRepository(new Holiday());
			}
		);
	}
}


class HolidayController extends Controller
{
	private $repo;

	public function __construct(HolidayRepository $holidayRepository)
	{
		$this->repo = $holidayRepository;
	}
}

API 文档

请查看 Ipunkt\LaravelRepositories\Contracts\RepositoryInterface 了解当前存在的函数。