mrgrain / eloquent-service-injection
通过属性注入服务到 Eloquent 模型的简单特性。
1.1.0
2017-02-12 23:55 UTC
Requires
- php: >=5.5.9
- illuminate/support: ^5.1
Requires (Dev)
- illuminate/database: ^5.1
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^5.0
This package is not auto-updated.
Last update: 2024-09-19 03:32:45 UTC
README
通过属性注入服务到 Eloquent 模型的简单特性。
Laravel 的 Eloquent 模型不支持构造函数服务注入。此特性旨在提供一种简单统一的方法将服务注入到 Eloquent 模型中。它通过使用属性来定义服务,类似于其他模型选项的定义方式(例如,考虑 $casts
或 $with
用于属性转换和预加载)。
要求
- PHP >= 5.6.0
- Laravel >= 5.1 或 Lumen >= 5.1
安装
使用 Composer 将包添加到您的仓库。
composer require mrgrain/eloquent-service-injection
用法
通过使用特性扩展您的模型
namespace Mrgrain\EloquentServiceInjection; class Comment extends Model { use ServiceInjectionTrait; }
为了始终包含特性,请将其添加到所有模型都继承的基础模型中。
将待注入的服务添加到 $inject
属性。
class Comment extends Model { use ServiceInjectionTrait; public $inject = [ 'storage' => Illuminate\Contracts\Filesystem\Filesystem::class ]; }
使用数组键来访问服务。
class Comment extends Model { use ServiceInjectionTrait; public $inject = [ 'storage' => Illuminate\Contracts\Filesystem\Filesystem::class ]; public function storeAttachment($path, $contents) { $this->storage->put($path, $contents); } }
其他用法
虽然特性是为 Eloquent 模型设计的,但它几乎可以用于任何类。以与模型相同的方式添加和使用它。
贡献
首先:感谢您考虑为这个项目做出贡献。没有您,开源社区将不再相同。如果您决定向这个项目提交拉取请求,我恳请您遵守以下指南
- 注意项目的范围,以避免失望。
- 请在所有拉取请求中添加适当的测试。
- 在此项目上进行互动时,请遵循 行为准则。