- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在使用 ZF2 serviceManager,我试图弄清楚为什么 serviceManager 没有将 sm 注入(inject)到实现 ServiceLocatorAwareInterface 的类中。
我的主要问题是我做对了吗?或者“服务”键不是用于实现 ServiceLocatorAwareInterface 的服务,而是用于不需要注入(inject)的服务?
在 Module.php 中
public function getServiceConfig() {
return array(
'invokables' => array(
'myService1' => 'MyModule\Service\Service'
),
'services' => array(
'myService2' => new MyModule\Service\Service(),
),
);
}
在 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;
}
}
当我在 Controller 中调用服务时
<?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.
}
}
最佳答案
如果您想使用 ServiceManagerAwareInterface 并将服务管理器自动注入(inject)到您的服务中,您应该继续使用“可调用”部分。
查看 /Zend/ServiceManager/ServiceManager.php,“服务”应该作为已经实例化的对象注册到 ServiceManager。当服务定位器在检索期间在其本地服务缓存中查找时,它假定“服务”已经完全设置并且不注入(inject) sm 或运行任何初始化程序。
“invokables”、“factories”、“abstract_factories”是动态创建的,并在“初始化程序”在新创建的服务实例上运行时注入(inject) sm(请参阅函数 create($name))。
关于php - 为什么将 Servicemanager 注入(inject)可调用而不是服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14608850/
我正在尝试修改和复制一个自定义模块,我已经设置了所有数据库连接,但是在按如下方式查看我的模块时出现错误: Zend\ServiceManager\ServiceManager::get was una
我做了一个登录表单。我的 Controller 中总是出现此错误,它无法为此数据库获取或创建实例。我已经阅读了所有关于它的文档以及为什么会出现这个错误。我已尽一切努力解决此问题,但仍然无法正常工作。有
大家好! 我正在学习zf2,并尝试设置一个导航面板(基于:Zend Framework 2: Zend_Navigation),但计算机的答案仍然是: 发生错误执行过程中出现错误;请稍后再试。附加信息
我正在创建一个沙盒应用程序,并且已经使用 ServiceManagement 框架自动启动。然而,对于 Swift,ServiceManagement 框架已被弃用(自 Xcode 7 beta 3
我在构建 android 源代码时遇到以下错误,我在其中添加了使用 android.os.ServiceManager 的自定义应用程序。 cannot find symbol symbol : c
我正在尝试在我的实体类上使用 Service Manager,但我不知道最好的方法。 在 Controller 上这很容易,因为我们可以使用以下命令调用服务管理器: $this->getService
最近我从source.android.com(projects/platform/packages/apps/Browser.git/)下载了浏览器的src代码。如果我在 Eclipse 上将其作为构
我看了一个simulateKeyInput的demo, 部分代码如下: 最终 IWindowManager windowManager=IWindowManager.Stub。 asInterface
我正在尝试在 Zend Framework 2.3 中的 Controller 上运行测试。 我测试的 Action 是这样的: public function listAction() {
我正在尝试将我的 beta DI 代码转换为 ZF2 的发布版本。现在我一开始就崩溃了,似乎没有任何关于将东西注入(inject) Controller 的文档,这让我认为在 Controller 中
我正在学习 zf2,从网上阅读文档、教程等。现在我对 Zend\ServiceManager\ServiceManagerAwareInterface.php 感到困惑和 Zend\ServiceMa
我正在 Cocoa 中构建一个代理应用程序,需要在登录时启动。 我确实做了TIMSCHROEDER说。在 Debug模式下它是完美的。但是,由于我将应用程序存档并导出到 macOS 应用程序,我无法再
我对由 ServiceManager 注册而不是由 SystemServiceRegistry 注册的服务有疑问。 在SystemServiceRegistry 的评论中 /** * Manages
对于android8.1,SELinux权限更加严格。它只允许定义在 plat_service_contexts 中的服务注册到 ServiceManager,我们有一个供应商服务之前注册到 Serv
我正在使用 Xamarin.Android 开发 Android 应用程序。我必须访问 ServiceManager 才能检索特定的 IBinder。 ServiceManager 可由 Java 应
我正在使用aidl自动接听电话,代码如下: ITelephony.Stub.asInterface(ServiceManager.getService("phone")) .answerRin
我目前正在使用 ZF2 serviceManager,我试图弄清楚为什么 serviceManager 没有将 sm 注入(inject)到实现 ServiceLocatorAwareInterfac
我已经创建了系统应用程序。它有一个 aidl 文件和服务。我已经在服务方法 onStartCommand() 中实现了 aidl 接口(interface)和 addService。 mBinder
我在尝试使用 ZF2 的身份验证服务时遇到了一些问题。我必须遵循 Module.php getServiceConfig 函数: array( 'Auth\Model\Cus
第一个 ZF2 应用程序,到达那里,但我认为在依赖注入(inject)和 ServiceManager 方面仍然缺少一两个想法。 目前我在编写一个新的数据库网关类时遇到了一个特殊问题。我不会注入(in
我是一名优秀的程序员,十分优秀!