如何通过示例详述在Laravel中实现服务容器的方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4668个文字,预计阅读时间需要19分钟。
1. 容器本质:服务容器本质上是一个数组,键名是服务名,值是服务实例。服务可以是初始值,也可以是对象,甚至任意数据。服务名可自定义,也可指对象。
1. 容器的本质
- 服务容器本身就是一个数组,键名就是服务名,值就是服务。
- 服务可以是一个原始值,也可以是一个对象,可以说是任意数据。
- 服务名可以是自定义名,也可以是对象的类名,也可以是接口名。
// 服务容器 $container = [ // 原始值 'text' => '这是一个字符串', // 自定义服务名 'customName' => new StdClass(), // 使用类名作为服务名 'StdClass' => new StdClass(), // 使用接口名作为服务名 'Namespace\\StdClassInterface' => new StdClass(), ]; // ----------- ↓↓↓↓示例代码↓↓↓↓ ----------- // // 绑定服务到容器 $container['standard'] = new StdClass(); // 获取服务 $standard = $container['standard']; var_dump($standard);
2. 封装成类
为了方便维护,我们把上面的数组封装到类里面。
$instances还是上面的容器数组。我们增加两个方法,instance用来绑定服务,get用来从容器中获取服务。
本文共计4668个文字,预计阅读时间需要19分钟。
1. 容器本质:服务容器本质上是一个数组,键名是服务名,值是服务实例。服务可以是初始值,也可以是对象,甚至任意数据。服务名可自定义,也可指对象。
1. 容器的本质
- 服务容器本身就是一个数组,键名就是服务名,值就是服务。
- 服务可以是一个原始值,也可以是一个对象,可以说是任意数据。
- 服务名可以是自定义名,也可以是对象的类名,也可以是接口名。
// 服务容器 $container = [ // 原始值 'text' => '这是一个字符串', // 自定义服务名 'customName' => new StdClass(), // 使用类名作为服务名 'StdClass' => new StdClass(), // 使用接口名作为服务名 'Namespace\\StdClassInterface' => new StdClass(), ]; // ----------- ↓↓↓↓示例代码↓↓↓↓ ----------- // // 绑定服务到容器 $container['standard'] = new StdClass(); // 获取服务 $standard = $container['standard']; var_dump($standard);
2. 封装成类
为了方便维护,我们把上面的数组封装到类里面。
$instances还是上面的容器数组。我们增加两个方法,instance用来绑定服务,get用来从容器中获取服务。

