依赖注入容器
Joomla 依赖注入容器,简称 DIC,基本上是一个键值对存储库,其中
- 键是一个字符串,通常是类的完全限定名称或接口
- 值是相关类的实例,或返回该类实例的函数。
键的值实际上并不重要 - 只要它可理解,并且在放入和取出条目时使用相同的键即可。当然,它必须是唯一的。
您可以使用 set()
将内容放入容器,传递
- 键 = 类名或接口名
- 值 = 返回类实例的函数(或者值可以只是类实例,无需包含函数)
- shared - 一个布尔值,用于定义类实例是否可以共享(即,如果对 DIC 的第二个请求提供该实例,它返回的是相同的实例还是新的实例)
- protected - 一个布尔值,用于定义此 DI 容器中的条目是否受保护(如果您尝试使用相同的键再次调用
set()
来覆盖受保护的条目,则会引发错误)。
函数 share()
基本上与 set()
相同,只是将 shared 布尔值设置为 true。
您可以通过调用 get()
并传递您想要的资源的键来从容器中获取内容。DI 功能将
- 在容器中查找键
- 如果值还不是类实例,则运行关联的函数来生成类实例
- 如果资源是共享的,则存储类实例,以便在后续调用
get()
时,它可以直接返回实例 - 将类实例返回给您
您还可以在容器中为每个键定义别名,这意味着您可以调用 get()
,传递键或键的别名。