有没有人使用IoC容器绑定到Eloquent模型?

例如,我有一个我的帐户和类别雄辩模型的存储库. Account模型与Categories具有hasMany关系.类别存储库将Account存储库注入构造函数.

相反,我想注入一个像这样的实际账户模型……

在我的服务提供商中:

$this->app->bind(App\Models\Account::class, function ($app) {

return (Auth::check()) ? Auth::user()->account : null;

});

在我的存储库中

use App\Models\Account;

class CategoryRepository

{

private $account;

public function __construct(Account $account = null)

{

// check and throw error if null

$this->account = $account;

}

public function getAll()

{

return $this->account->categories()->get();

}

}

如果我将一个实际的雄辩模型绑定到构造函数中,那么这是不好的做法,还是我会陷入可预见的陷阱?

最佳答案 虽然你可以这样做,但你可能不想这样做.如果您这样做,IoC容器将始终使用该绑定来解析帐户,这不是您正在寻找的.

更合适的方法是为如何解析CategoryRepository而不是Account定义绑定.这样,在解析CategoryRepository的代码中,您可以确保始终传入实际帐户,如果不可用则确保为null.

$this->app->bind(App\Repos\CategoryRepository::class, function ($app) {

$account = Auth::check() ? Auth::user()->account : null;

return new App\Repos\CategoryRepository($account);

});

php注册 绑定的容器,php – 将Eloquent模型绑定到服务容器相关推荐

  1. Laravel开发:Laravel核心——Ioc服务容器源码解析(服务器绑定)

    服务容器的绑定 bind 绑定 bind 绑定是服务容器最常用的绑定方式,在 上一篇文章中我们讨论过,bind 的绑定有三种: 绑定自身 绑定闭包 绑定接口 今天,我们这篇文章主要从源码上讲解 Ioc ...

  2. Laravel核心解读--服务容器(IocContainer)

    Laravel的核心是IocContainer, 文档中称其为"服务容器",服务容器是一个用于管理类依赖和执行依赖注入的强大工具,Laravel中的功能模块比如 Route.Elo ...

  3. php的lumen框架,Lumen框架“服务容器”源码解析

    1.服务容器 "服务容器"是Lumen框架整个系统功能调度配置的核心,它提供了整个框架运行过程中的一系列服务."服务容器"就是提供服务(服务可以理解为系统运行中 ...

  4. php ico容器,Laravel 核心——IoC 服务容器

    服务容器 Laravel 服务容器是一个用于管理类依赖和执行依赖注入的强大工具. 在理解这句话之前,我们需要先了解一下服务容器的来龙去脉: laravel神奇的服务容器.这篇博客告诉我们,服务容器就是 ...

  5. ASP.NET Core MVC 模型绑定用法及原理

    前言 查询了一下关于 MVC 中的模型绑定,大部分都是关于如何使用的,以及模型绑定过程中的一些用法和概念,很少有关于模型绑定的内部机制实现的文章,本文就来讲解一下在 ASP.NET Core MVC ...

  6. 精通ASP.NET MVC ——模型绑定

    模型绑定(Model Binding)是指,用浏览器以Http请求方式发送的数据来创建.Net对象的过程. 准备示例项目 新建一个空的MVC项目,名叫MvcModels,接下去会以此项目来演示各种功能 ...

  7. 白话学习MVC(六)模型绑定

    一.什么是模型绑定? 模型绑定存在的意义就是为Action的参数提供值,例如:如下表单中提交了数据,那么Action(即:Index)的参数Id,Name的值就是表单中对应的name属性相同的值,而表 ...

  8. 【ASP.NET MVC4】第七课:模型绑定、绑定简单类型数据和对象类型数据

    知识点:MVC中的模型绑定.绑定简单类型数据.绑定对象类型数据.使用模型绑定接收上传文件   ASP.NET MVC 框架可以将浏览器发起的请求数据映射到方法的参数中,这一常见的技术称为模型绑定.在实 ...

  9. laravel-神奇的服务容器(转)

    原文地址: http://www.insp.top/learn-laravel-container ,转载务必保留来源,谢谢了! 容器,字面上理解就是装东西的东西.常见的变量.对象属性等都可以算是容器 ...

最新文章

  1. 《Linux内核设计与实现》读书笔记 - 目录 (完结)
  2. spring boot中servlet启动原理
  3. 转:elasticsearch nested嵌套查询
  4. jdk 细粒度锁_使用JDK 8轻松进行细粒度排序
  5. Java FilePermission getActions()方法与示例
  6. “Device eth0 does not seem to be present”解决办法
  7. tomcat配置虚拟目录的方法
  8. postman发送Post请求
  9. 腾讯变革 150 天全记录
  10. MySQL慢查询分析方法
  11. mysql统计记录数据库设计_MYSQL数据库设计,查询规范
  12. AssetPostprocessor.OnPreprocessModel
  13. AtCoder ARC 076D - Built?
  14. 使用c语言函数的小结,C语言函数指针小结(1)
  15. Oracle大神资料索引
  16. 华中科技大学伍冬睿教授团队关于生理计算中的对抗攻击与防御综述
  17. yigo基础学习笔记1
  18. 如何使用NodeJS发送邮件
  19. 加盐密码哈希:如何正确使用 (转)
  20. 奇奇怪怪好用工具集合

热门文章

  1. ssas报表项目数据集_Analysis Services(SSAS)多维设计技巧–数据源视图和多维数据集
  2. 用tensorflow实现最简单的神经网络
  3. HDU 3333 Turing Tree(树状数组/主席树)
  4. Redis登陆服务器和批量删除指定的key
  5. 内置auth 的使用,用超级用户创建
  6. ECNU 3263 丽娃河的狼人传说(差分约束)
  7. MapServer使用笔记(一)
  8. BDT在Mac(10.8.3)下找不到libfreetype.6.dylib
  9. php 调用继承的方法吗,如何从继承的方法中调用PHP父方法?
  10. mysql复合语句声明开始于_mysql8 参考手册--BEGIN ... END复合语句