什么是 Laravel IoC(服务容器) ?IoC 解决了什么问题?

请尝试在评论区里写下答案(如不能清楚表述,那么你可能没真正理解)。欢迎参与,为下一次求职做准备。
  • IoC 的全称是什么?
  • 什么是 Laravel IoC(服务容器) ?
  • IoC 设计的初衷是什么?
  • IoC 解决了什么问题?

请在评论区留下你的回答。

摈弃世俗浮躁,追求技术精湛
Summer
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 18

IoC 的全称是什么?Inversion of Control ,控制反转。
什么是 Laravel IoC(服务容器) ?
由外部负责其依赖需求的行为,我们称其为 “控制反转(IoC)”。我们需要一个“工厂”实现控制反转。工厂模式,就是一个类所依赖的外部事物的实例,都可以被一个或多个 “工厂” 创建的这样一种开发模式。Laravel IoC 服务容器则是工厂模式的升华–更为先进的工厂,是 laravel 的核心。
个人理解IoC容器像一台电脑,容纳很多的服务,一个个.exe可执行文件;exe文件能否被安装,取决于是否实现了电脑的interface。安装相当于 register;启动时相当于 boot;设置为默认软件相当于 bind;为了更容易查找,给.exe 的真实路径弄个快捷方式相当于 Facade。运行中电脑内部自动解决运行中的依赖,相当于利用了Reflection
假如某个程序使用了或者依赖了播放器
Laravel

2年前 评论
boolstone 2年前
php_yt (作者) 2年前
oneweil 2年前
qbhy

问就是依赖反转

2年前 评论
porygonCN 2年前
thebestxt 2年前
qbhy (作者) 2年前
DonnyLiu
2年前 评论
thebestxt

@DonnyLiu 附加 Summer 的赞扬

file

2年前 评论
Luson

传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了 IoC 容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合
laravel 容器的关键:

<?php
class Container  
{
 protected static $instance; // 单例模式
 protected $instances = []; // 保存解析出来之后的实例
 protected $bindings = []; // 容器绑定实例
 protected $aliases = []; // 记录类库定义的别名
 public function bind(){} // 就是绑定到容器的方法
 public function has(){} // 校验是否在容器中
 public function getInstance(){} // 把解析出来之后的容器保存在实例中
 public function make(){} // 从容器中解析
}  
2年前 评论

IoC 的全称是什么?Inversion of Control ,控制反转。
什么是 Laravel IoC(服务容器) ?
由外部负责其依赖需求的行为,我们称其为 “控制反转(IoC)”。我们需要一个“工厂”实现控制反转。工厂模式,就是一个类所依赖的外部事物的实例,都可以被一个或多个 “工厂” 创建的这样一种开发模式。Laravel IoC 服务容器则是工厂模式的升华–更为先进的工厂,是 laravel 的核心。
个人理解IoC容器像一台电脑,容纳很多的服务,一个个.exe可执行文件;exe文件能否被安装,取决于是否实现了电脑的interface。安装相当于 register;启动时相当于 boot;设置为默认软件相当于 bind;为了更容易查找,给.exe 的真实路径弄个快捷方式相当于 Facade。运行中电脑内部自动解决运行中的依赖,相当于利用了Reflection
假如某个程序使用了或者依赖了播放器
Laravel

2年前 评论
boolstone 2年前
php_yt (作者) 2年前
oneweil 2年前

Q:IoC 的全称是什么?
A:IOC(Inversion of Control)就是控制反转,是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。
Q:什么是 Laravel IoC(服务容器) ?
A:Laravel IoC 是整个 Laravel 核心,它提供了整个系统功能及服务的配置,调用。当程序开始运行时,将所需服务注册(Bind)到容器里面,当需要时将其取出 (Make) 即可。(IoC 容器是一个非常强大的类管理工具。它可以自动解析类。)
Q:IoC 设计的初衷是什么?
A:?
Q:IoC 解决了什么问题?
A:对象之间的耦合度或者说依赖程度降低,资源能够更好的管理。

2年前 评论

IoC 的全称是什么?

答:Inversion of Control

什么是 Laravel IoC(服务容器) ?

答:Laravel Inversion of Control。

IoC 设计的初衷是什么?

答;问就是控制反转

IoC 解决了什么问题?

答: 我觉得主要解决的是代码冗余,使项目易维护
解耦,解决依赖关系

2年前 评论
   ioc 最主要的功能就是解耦和解决实例之间的依赖关系。在我们需要一个实例时这个实例恰好又需要另外一个实例一般在构造函数中注入,解决方法就是通过依赖注入的方式通过递归和反射的方式把实例注入到进来这个时候 ioc 容器也就实现了我们要达到的目的。
  其中最主要的在于 make 方法通过反射类查找到,在 build 实例的时候我们应当注意需要一个构建栈来存放我们构建的实例在允许出栈的时候控制栈指针出栈。laravel 中还实现了上下文绑定的关系

// 上下文绑定 $container->when(UserDao::class)->needs(IUser::class)->give(Man::class);

2年前 评论
kis龍 2年前

@Oyxiaoxi 比较好的回答

2年前 评论
CleverBilly

IoC 的全称是 Inversion of Control(控制反转),在 Laravel 中通常被称为服务容器(Service Container)或依赖注入容器(Dependency Injection Container)。

Laravel IoC 是一种设计模式,它的核心思想是将控制权从程序员手中转移给框架。具体来说,就是将创建对象和对象之间的依赖关系的责任交给容器,由容器负责实例化对象并解决它们之间的依赖关系,而不是由程序员手动实例化和解决依赖关系。

Laravel IoC 的初衷是为了解决应用程序中的依赖关系问题。在传统的开发方式中,程序员需要手动实例化和管理对象之间的依赖关系,这会导致代码变得难以维护和扩展。而使用 IoC 容器可以让程序员专注于业务逻辑,而将对象的创建和依赖关系的管理交给框架处理。

Laravel IoC 解决了以下问题:

管理对象的生命周期:容器负责实例化对象,并跟踪它们的生命周期。这意味着对象的创建和销毁都是由容器控制的,可以确保对象的正确使用和回收。

解决依赖关系:容器可以自动解决对象之间的依赖关系。程序员只需要定义对象之间的依赖关系,而不需要手动实例化和传递依赖项。

提高代码的可重用性和可测试性:使用容器可以使代码更加模块化和松耦合,从而提高代码的可重用性和可测试性。容器可以轻松地替换依赖项的实现,从而使代码更加灵活和可扩展。

总之,Laravel IoC 是一个强大的工具,可以帮助程序员管理对象的生命周期和解决对象之间的依赖关系,从而提高代码的可维护性、可测试性和可扩展性。

1年前 评论

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