Pon*_*juh 4 php zend-framework2
我正在使用ZF2 serviceManager,我正在试图找出为什么serviceManager不会在实现ServiceLocatorAwareInterface的类中注入sm.
我的主要问题是我做得对,还是"服务"键不是用于实现ServiceLocatorAwareInterface的服务,而是用于不需要注入的服务?
在Module.php中
public function getServiceConfig() {
return array(
'invokables' => array(
'myService1' => 'MyModule\Service\Service'
),
'services' => array(
'myService2' => new MyModule\Service\Service(),
),
);
}
Run Code Online (Sandbox Code Playgroud)
在MyModule\Service\Service.php中
namespace MyModule\Service;
use Zend\ServiceManager\ServiceManagerAwareInterface;
use Zend\ServiceManager\ServiceManager;
class Service implements ServiceManagerAwareInterface
{
/**
* @var ServiceManager
*/
protected $serviceManager = NULL;
/**
* Retrieve service manager instance
*
* @return ServiceManager
*/
public function getServiceManager()
{
return $this->serviceManager;
}
/**
* Set service manager instance
*
* @param ServiceManager $serviceManager
*/
public function setServiceManager(ServiceManager $serviceManager)
{
$this->serviceManager = $serviceManager;
}
}
Run Code Online (Sandbox Code Playgroud)
当我在控制器中调用服务时
<?php
namespace MyModule\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class IndexController extends AbstractActionController
{
public function IndexAction() {
$service1 = $this->getServiceLocator()->get('myService1');
$sm1 = $service1->getServiceManager();
//$sm1 becomes a object of Zend\ServiceManager\ServiceManager
//In other words i now can access the SM from within my service.
$service2 = $this->getServiceLocator()->get('myService2');
$sm2 = $service2->getServiceManager();
//$sm2 becomes NULL
//The service isn't aware of the SM and can't access it.
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您想使用ServiceManagerAwareInterface并自动将Service Manager注入您的服务,则应继续使用"invokables"部分.
通过/Zend/ServiceManager/ServiceManager.php查看,"services"意味着使用ServiceManager注册为已经实例化的对象.当服务定位器在检索期间查找其服务的本地缓存时,它假定"服务"已经完全设置并且不注入sm或运行任何初始化器.
"invokables","工厂","abstract_factories"是动态创建的,并在新创建的服务实例上运行"初始化程序"时注入sm(请参阅函数create($ name)).
| 归档时间: |
|
| 查看次数: |
2561 次 |
| 最近记录: |