可以直接实例化:意为实例化时不需要传入任何参数
不能直接实例化:意为实例化时必需要传入所需参数
<!-- lang: php -->
<?php
array(
'service_manager' => array(
//所有的key值(name)默认不能重复,如果需要覆盖,则需要加上参数,allow_override
'allow_override' => $boolean
// 直接将对象存入服务管理器(name => object)
'service' => array(
'Name' => new Foo()
),
/* 能够直接被实例化的类名,需要带上类所在的命名空间(name => class name)
* 延迟加截(只有在服务管理器get该类时,才会实例化该类)
* 单例模式(每次get的都是同一个对象)
*/
'invokables' => array(
'Name' => 'Namespace\ClassName'
),
/* 如果一个类不能直接被实例化,则必须写在这里 (name => factory class name)
* 该类必须实现 Zend\ServiceManager\FactoryInterface 接口
*/
'factories' => array(
'Name' => 'Namespace\FactoryClassName'
),
// 给一个服务(别名)设置一个或者多别名
'aliases' => array(
'AliaseName' => 'Namespace\TargetClassName',
'AnotherAliaseName' => 'AliaseName'
),
/* 当get一个不存在的服务时,会自动调用该类
* 该类必须实现 Zend\ServiceManager\AbstractFactoryInterface 接口
* 可以用于自动注册Controller
*/
'abstract_factories' => array(
'Namespace\AbstractFactoryClassNames'
),
/* 当get任何一个服务时,都会调用这里的面服务,会将get到的服务实例传入这里
* 该类必须实现 Zend\ServiceManager\InitializerInterface 接口
*/
'initializers' => array(
'Namespace\initializerClassName'
),
// servicemanger采用单例模式。设置get返回的服务名是否共享,如果是共享,则每次返回对象都是同一个,反之则每次返回的都是新的对象
'shared' => array(
'Name' => $boolean
)
)
)
?>