Code clips
容器和注入
Slim中依赖容器的注入主要有如下几种操作方式。
简单注入
这种注入适合对简单对象的操作,如number
/string
/array
等基本数据结构。
其实现首先使用Slim.php
中的魔术方法__set
,然后调用了依赖容器Helper/Set.php
中的set
方法,将数据存储到容器的data
属性中。
资源定位器
如下的代码将Slim作为了一个资源的提供者,将资源构造的方法以闭包的形式注入到Slim的依赖容器中,然后以KV方式通过Slim
的__get
方法(依赖容器Set
的get
方法)进行获取。
注入的闭包在被请求时,会被调用并返回闭包的返回值。
这一部分的实现如下。
单例资源
这里的单例资源指的是每次请求是一样的资源。资源定位器一栏中生成UUID的代码示例如果调用两次$app->uuid
会返回不同的UUID值,单例资源就是解决这个问题的。
它的实现是利用了PHP匿名函数中的static
修饰符,实现如下。
匿名函数
如果作为依赖的是匿名函数,那么如何存储的是没有被调用过的原样的闭包呢?
Slim中我们可以使用依赖容器的protect()
方法进行闭包的保存。
其实现利用了PHP闭包中的use
关键字进行状态保存。