antarctica/laravel-base-repositories

Laravel 应用程序的基础仓库接口和实现集合

v0.2.1 2015-01-12 15:26 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:54:28 UTC


README

为 Laravel 应用程序提供一组基础 仓库 接口和默认实现。

安装

在您的 composer.json 文件中需要此包

{
	"require-dev": {
		"antarctica/laravel-base-repositories": "~0.2"
	}
}

运行 composer update

用法

BaseRepositoryInterface

此包提供抽象仓库所需方法的非常基础的接口。也就是说,它的目标是描述典型仓库/模型可能需要的绝大多数基本/基础方法。

例如:查找资源 x 或创建资源。

如果仓库需要更多特定方法以满足其特定需求,这些方法可以直接添加到仓库类中,或者添加到扩展此接口的另一个接口中(如果这些额外方法需要由其他仓库使用)。

本质上,这个基础接口的设计是为了提供最常见的功能,这些功能几乎肯定会被需要。

请参阅 BaseRepositoryInterface.php 以获取此接口所需的具体方法,每个方法都使用 PHP DocBlocks 进行了文档说明。

返回类型

为了提供尽可能中立的接口,数据 MUSTPHP 标准数组 的形式返回。

这是为了确保实现之间通过使用最低共同基数方法保持互操作性。

这通过实现中的类型提示 DocBlock 属性进行指定。然而,这些依赖于手动验证或您的编辑器提供的功能来执行。

基本用法(Laravel)

<?php

use Antarctica\LaravelBaseRepositories\Repository\BaseRepositoryInterface;

abstract class BaseRepositoryEloquent implements BaseRepositoryInterface {

}

BaseRepositoryEloquent

此包使用 Laravel 的 Eloquent ORM 提供了 BaseRepositoryInterface 的默认实现。

此类使用给定的 Eloquent 模型以最基本的形式实现所需仓库方法。

例如,all() 方法返回 $this->model->all();,没有任何默认的 where 子句、排序等。

本质上,这个基础实现是为了防止您编写基本函数(如删除)的实现,以便您能够专注于需要自定义功能的情况。

这提供了一个中立的基础,特定目标类可以扩展以针对它们需要的方法,而不是实现可能与其他方法没有区别的所需方法。

请参阅 BaseRepositoryEloquent.php 以了解每个方法的实现细节,PHP DocBlocks 用于在行内记录每个方法。

返回类型

为了确保所有方法都以数据类型/结构格式返回数据,使用了一个通用的 export() 方法。此方法接受各种类型的数据(如 Eloquent 集合)并提供将复杂数据结构转换为标准数组的函数。

可以扩展此功能(目前只能通过替换)以添加对其他输入类型的支持。

基本用法(Laravel)

<?php

use Antarctica\LaravelBaseRepositories\Repository\BaseRepositoryEloquent;
use User;

class UserRepositoryEloquent extends BaseRepositoryEloquent {

    /**
     * @var User
     */
    protected $model;

    /**
     * @param User $model
     */
    function __construct(User $model)
    {
        $this->model = $model;
    }
}

贡献

此项目欢迎贡献,请参阅 CONTRIBUTING 以了解我们的通用政策。

开发

为了帮助开发并保持您的本地计算机整洁,使用了一个 VM(由 Vagrant 管理),以创建一个带有所有必要工具/库的隔离环境。

要求

  • Mac OS X
  • Ansible brew install ansible
  • VMware Fusion
  • Vagrant brew cask install vmware-fusion vagrant
  • 主机管理器Vagrant VMware 插件 vagrant plugin install vagrant-hostmanager && vagrant plugin install vagrant-vmware-fusion
  • 您在 ~/.ssh/ 中有一个私钥 id_rsa 和公钥 id_rsa.pub
  • 您的 ~/.ssh/config 中有一个类似 [1] 的条目

[1] SSH 配置条目

Host bslweb-*
    ForwardAgent yes
    User app
    IdentityFile ~/.ssh/id_rsa
    Port 22

配置开发虚拟机

虚拟机使用 Vagrant 管理,并通过 Ansible 配置。

$ git clone ssh://git@stash.ceh.ac.uk:7999/basweb/laravel-base-repositories.git
$ cp ~/.ssh/id_rsa.pub laravel-base-repositories/provisioning/public_keys/
$ cd laravel-base-repositories
$ ./armadillo_standin.sh

$ vagrant up

$ ssh bslweb-laravel-base-repositories-dev-node1
$ cd /app

$ composer install

$ logout

提交更改

使用 Git flow 工作流程来管理此软件包的开发。

应在 功能 分支内进行离散更改,这些分支是从 develop 分支创建的,并将合并回 develop(可以直接在 develop 分支中进行小的一行更改)。

当准备发布一组功能/更改时,从 develop 分支创建一个 release 分支,根据需要更新文档,并使用标记的、语义版本(例如 v1.2.3)合并到 master 分支。

发布后,应将 master 分支与 develop 分支合并,以重新启动过程。可以通过从 master 分支创建并直接合并到 master(然后合并到 develop)的 hotfix 分支来解决影响大的错误。

问题跟踪

与该软件包相关的问题、错误、改进、问题、建议和其他任务通过 BAS Web & Applications Team Jira 项目(BASWEB)进行管理。

清理

要删除开发虚拟机

vagrant halt
vagrant destroy

然后可以安全地按常规删除 laravel-base-repositories 目录。

许可证

版权所有 2014 NERC BAS。在 LICENSE 中以 MIT 许可证授权,有关详细信息请参阅。