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()的方式注入,就会写很多,很多.假如我使用方法注入,我注入的东西,可以很多地方是用.我一直感觉这样不好,大家是怎么处理的?

感谢

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 7

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

6年前 评论

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

6年前 评论

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

6年前 评论

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

6年前 评论

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

6年前 评论

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

6年前 评论

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

6年前 评论

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