刚刚接触laravel,对于laravel的服务容器不是很理解。看了《Laravel框架关键技术解析》和网上的一些资料后对于服务容器有了一些自己的理解,在这里分享给大家
1、依赖
IoC模式主要是用来解决系统组件之间相互依赖关系的一种模式。那么什么是依赖呢?下面给出依赖的实例
<?php
//设计公共接口
interface Go_To_School
{
public function go();
}
//实现交通工具类
class Foot implements Go_To_School
{
public function go()
{
echo 'walt to school';
}
}
//设计学生类,实现去学校时要依赖的交通工具实例
class Student
{
private $trafficTool;
public function __construct()
{
//产生依赖
$this->trafficTool = new Foot();
}
public function go_to_school()
{
$this->trafficTool->go();
}
}
$student = new Student();
$student->go_to_school();
这里要实现的功能是学生去学校,当创建了一个学生实例的时候,同时也创建了一个交通工具的实例。可以看到学生和交通工具之间不可避免的产生了一个依赖。在程序中依赖可以理解为一个对象实现某个功能时需要其他对象相关功能的支持。
当然交通工具还有很多,接着完善代码
<?php
//设计公共接口
interface Go_To_School
{
public function go();
}
//实现不同交通工具类
class Foot implements Go_To_School
{
public function go()
{
echo 'walt to school';
}
}
class Car implements Go_To_School
{
public function go()
{
echo 'drive to school';
}
}
class Bicycle implements Go_To_School
{
public function go()
{
echo 'ride to school;';
}
}
/*
* 少量的依赖并不会有太过直观的影响,我们随着这个例子逐渐铺开,让大家慢慢意识到,当依赖达到一个量级时,是怎样一番噩梦般的体验
*/
class more implements Go_To_School
{
public function go()
{
//...................
}
}
/*
*
*
*
*
* more and more
*
*
*
*
*
*/
//设计学生类,实现去学校时要依赖的交通工具实例
class Student
{
private $trafficTool;
public function __construct()
{
//产生依赖
$this->trafficTool