sourcescript / laravel-dependency-injector
Requires
- php: >=5.4.0
- illuminate/support: 4.2.*
This package is not auto-updated.
Last update: 2024-09-24 01:15:47 UTC
README
#Laravel4 依赖注入器
### 为什么?努力在 Laravel4 中开发可扩展的应用程序的艰难部分是依赖注入。通常,我们总是在我们的应用程序中遇到使用 Use \Config
或 Use \Response
的麻烦。实施此设计模式对开发效率的影响将是巨大的。
假设 Laravel 4 已经移植和重构成一个新框架,或者想象你,作为开发者,从使用 sentry
切换到基本的 auth
。你会怎么做?效率和依赖始终是问题。
### 版本 0.0001 感谢其他库 SocialConnect 和我正在构建的两个大型以 API 为中心的程序,依赖问题很大。现在,这不会成为问题。
### 安装
#### Composer #### Facades
<?php ... 'DependencyInterface' => 'Sourcescript\LaravelDependencyInjector\Facades\DependencyFacade' ...
将其插入到 facades 数组中。
声明:由于 psr 问题,您可能无法直接使用 Facade 来实现某些应用程序或库,因此它们可能会插入以下内容
<?php use Sourcescript\LaravelDependencyInjector\Interfaces\DependencyInterface;
而不是将大量库或扩展导入到您的库中(从 Laravel 的库),您可能只需要导入依赖注入器,它会完成剩下的工作
#### Providers
<?php ... 'Sourcescript\LaravelDependencyInjector\LaravelDependencyInjectorServiceProvider' ...
将以下内容插入到 providers 数组中
### 如何使用?以下是一个使用我们库进行更好的依赖注入的以 API 为中心的控制器的示例
<?php namespace Pupilr\System\Controllers\User; use Sourcescript\LaravelDependencyInjector\Interfaces\DependencyInterface; class UserController extends APIController { protected $dependencies; public function __construct(DependencyInterface $dependencies) { $this->dependencies = $dependencies; } public function getIndex() { $result = [ 'code' => 200, 'message' => 'hello world' ]; return $this->dependencies->response->json($result)->setCallback($this->dependencies->input->get('callback')); } }
正如您所看到的,尽管它有点长,但更加整洁,更容易重写和改进,您不需要逐个编辑。### 可用依赖
<?php $dependencies; $dependencies->app(); $dependencies->auth(); $dependencies->cache(); $dependencies->config(); $dependencies->db(); $dependencies->event(); $dependencies->file(); $dependencies->form(); $dependencies->hash(); $dependencies->html(); $dependencies->input(); $dependencies->redirect(); $dependencies->response(); $dependencies->request(); $dependencies->session(); $dependencies->url(); $dependencies->validator(); $dependencies->view();
### 关于过度使用的问题 此应用程序/库不会对当前应用程序所需的缓存或内存造成太大负担,因为应用程序的每个需求都由 app 懒加载。(见代码)
### 未来修复
- Artisan 任务:用于创建新依赖
### 致谢 感谢 Kier 和 Jeff(都是我的朋友)指出错误,并帮助我生成更好的插件
此外,感谢 SourceScript Innovations,这个项目将始终用爱心完成。