sourcescript/laravel-dependency-injector

此包最新版本(dev-master)没有可用的许可证信息。

dev-master 2014-08-04 21:43 UTC

This package is not auto-updated.

Last update: 2024-09-24 01:15:47 UTC


README

#Laravel4 依赖注入器

### 为什么?努力在 Laravel4 中开发可扩展的应用程序的艰难部分是依赖注入。通常,我们总是在我们的应用程序中遇到使用 Use \ConfigUse \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 懒加载。(见代码)

### 未来修复

  1. Artisan 任务:用于创建新依赖

### 致谢 感谢 Kier 和 Jeff(都是我的朋友)指出错误,并帮助我生成更好的插件

此外,感谢 SourceScript Innovations,这个项目将始终用爱心完成。