Laravel 的依赖注入矛盾点

<?php

namespace App\Http\Controllers;

use App\User;
use App\Repositories\UserRepository;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
/**

  • User Repository 的实现。
  • @var UserRepository
    */
    protected $users;

    /**

  • 创建新的控制器实例。
  • @param UserRepository $users
  • @return void
    */
    public function __construct(UserRepository $users)
    {
    $this->users = $users;
    }

    /**

  • 显示指定用户的详细信息。
  • @param int $id
  • @return Response
    */
    public function show($id)
    {
    $user = $this->users->find($id);

    return view('user.profile', ['user' => $user]);

    }
    }
    如果userController 里面需要东西比较多,如果使用__construct()的方式注入,就会写很多,很多.假如我使用方法注入,我注入的东西,可以很多地方是用.我一直感觉这样不好,大家是怎么处理的?

感谢

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7

这时候要想为什么要注入那么多了

7年前 评论

@Corrida 因为我是控制器,.这个控制器的功能很多.比如订单模块

7年前 评论

可以尝试做一个集合类,比如这个类中只有订单的全部依赖,或只有会员的全部依赖等,通过laravel的注册容器注入,这样你的控制器依赖订单时,只需要引入一个订单集合类就可以了,如果要用订单和会员,最多也就两个依赖。
后期维护的话,订单中新增新的依赖,直接修改订单的集合类就可以了。。

7年前 评论

@畅畅 我 正在尝试这么去做

7年前 评论

我觉得__construct参数里只保留一个通用的服务,各个控制器方法可以用门面

7年前 评论

@梦康 对的 这样确实可以,所有的都是门面,有通用的服务.

7年前 评论

构造函数里面没必要注入那么多东西, 在控制器方法里面使用的时候再注入. 用啥注入啥

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!