antarctica / laravel-base-repositories
Laravel 应用程序的基础仓库接口和实现集合
Requires
- php: >=5.4.0
- antarctica/laravel-base-exceptions: ~0.2
Requires (Dev)
- illuminate/database: ~4.0
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 进行了文档说明。
返回类型
为了提供尽可能中立的接口,数据 MUST 以 PHP 标准数组 的形式返回。
这是为了确保实现之间通过使用最低共同基数方法保持互操作性。
这通过实现中的类型提示 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 许可证授权,有关详细信息请参阅。