aedart / laravel-helpers
为Laravel的一些核心包提供获取器和设置器的实用程序包。此包利用Laravel的原生Facades,在没有提供自定义实例的情况下作为后备使用。
Requires
- php: >=7.1.0
- illuminate/support: 5.6.*
Requires (Dev)
- aedart/license: 1.*
- aedart/license-file-manager: ~2.0
- aedart/testing-gst: ~2.0
- aedart/testing-laravel: ~4.0
- predis/predis: ~1.1
README
废弃 - Laravel Helpers
该包已被 aedart/athenaeum 替代
获取器和设置器实用程序包,用于Laravel的一些核心包。
当没有提供自定义实例时,此包将使用Laravel的原生Facades作为后备。
内容
何时使用此包
- 当你的组件依赖于Laravel的一个或多个原生组件时
- 当你有强烈的需要与这些依赖进行接口交互时
- 当你需要能够设置不同实例的给定原生Laravel组件时,例如你实现的配置存储库版本
何时不使用此包
如果你使用的是现代IDE,则添加的PHPDoc将确保各种方法的返回类型提示。然而,你不应该盲目地使用这些辅助器,只是为了获取代码提示,对于Laravel的Facades。如果你只是寻求这个,那么Barry vd. Heuvel的Laravel IDE Helper Generator包,可能是一个更好的解决方案。
如何安装
composer require aedart/laravel-helpers
此包使用composer。如果你不知道它是什么的或它是如何工作的,我建议你在尝试使用此包之前先阅读一些关于它的内容。
快速入门
组件感知接口和组件特性
让我们假设你有一些类型的组件,需要知道配置存储库。你可以通过实现ConfigAware
接口来确保这一点。此外,通过ConfigTrait
特性,还可以提供默认实现。
<?php use Aedart\Laravel\Helpers\Contracts\Config\ConfigAware; use Aedart\Laravel\Helpers\Traits\Config\ConfigTrait; class MyComponent implements ConfigAware { use ConfigTrait; }
现在,您的组件可以设置和获取 Laravel 的 \Illuminate\Contracts\Config\Repository
的实例。这意味着,如果您有此类存储库的自定义实现,则可以在组件中指定它;
<?php // Somewhere in you application... $myComponent = new MyComponent(); $myComponent->setConfig($myCustomConfigRepository);
默认回退到 Laravel 的 Facades
所有特性都默认有一个回退方法,该方法调用 Laravel 对应的 Facades,确保即使没有指定实例,也会返回一个组件;
<?php // When no custom configuration repository has been specified... $myComponent = new MyComponent(); $configRepository = $myComponent->getConfig(); // Uses fallback, invokes the `\Illuminate\Support\Facades\Config`, which is then resolved from the IoC Service Container
Laravel 应用程序内的使用
您不需要任何特殊的配置或服务提供者。只需确保您已将此软件包作为依赖项要求,您就可以开始了。
Laravel 应用程序之外
如果您计划在 Laravel 应用程序之外使用此软件包,则可能需要额外的依赖项。
示例
如果您需要处理文件系统组件,则必须要求 Laravel 的文件系统软件包;
composer require illuminate/filesystem
IoC 服务容器 - 无回退
如果此软件包在 Laravel 应用程序之外使用,则对于任何实现的特征,都不会提供回退。如果需要回退,则由您提供。如果是这种情况,则可以在您的组件中重写 getDefaultXZY
方法。
<?php use Aedart\Laravel\Helpers\Contracts\Config\ConfigAware; use Aedart\Laravel\Helpers\Traits\Config\ConfigTrait; use Illuminate\Contracts\Config\Repository; use Illuminate\Config\Repository as ConfigRepo; class MyComponent implements ConfigAware { use ConfigTrait; public function getDefaultConfig() : Repository { return new ConfigRepo(); // Please note that this repository will NOT store values statically! } }
作为替代方案,您还可以绑定依赖项并继续使用 Facades。有关 Laravel 的 IoC 服务容器 的更多信息,请参阅相关内容。
贡献
您是否发现了缺陷(错误或设计缺陷),或者您希望改进?在以下章节中,您可能会找到一些有用的信息,说明您如何帮助此项目。无论如何,我感谢您抽出时间帮助我提高项目的成果和整体质量。
错误报告
如果您确信您发现了错误,那么至少您应该创建一个新的问题。在给定的问题中,您至少应该描述以下内容;
- 缺陷位于何处
- 对缺陷的良好、简短且精确的描述(为什么是缺陷)
- 如何复制缺陷
- (可能的解决方案,如何解决缺陷)
当有时间时,我会审查您的问题并采取行动。
分支、代码并发送拉取请求
一份良好且写得好的错误报告会对我有很大帮助。不过,如果您能够或愿意自己解决缺陷,这里是如何做的;
- 分支此项目
- 为给定的缺陷修复创建一个新的本地开发分支
- 编写代码/更改
- 创建可执行的测试用例(证明您的更改是稳固的!)
- 提交并将更改推送到您的分支存储库
- 发送带有更改的拉取请求
- 喝一杯 啤酒 - 您应得的 :)
一旦我收到您的拉取请求(并且有时间处理),我将审查您的更改并将其合并到这个项目中。如果没有,我会通知您我为什么选择不合并。
致谢
- Taylor Otwell,因为创建了Laravel,尤其是我每天都在使用的服务容器。
- Jeffrey Way,因为创建了Laracasts - 一个学习新事物的好地方... 例如,了解门面是如何工作的!
版本控制
此包遵循语义版本控制 2.0.0
许可证
BSD-3-Clause,请阅读此包中包含的LICENSE文件