ZF2:如何从自定义类中获取ServiceManager实例

用户名

我在弄清楚如何从自定义类中获取ServiceManager实例时遇到了麻烦。

在控制器内部很容易:

$this->getServiceLocator()->get('My\CustomLogger')->log(5, 'my message');

现在,我创建了一些独立的类,并且需要Zend\Log在该类中检索实例。在zend Framework v.1中,我通过静态调用做到了这一点:

Zend_Registry::get('myCustomLogger');

如何My\CustomLogger在ZF2中检索

杰里·萨拉维亚(Jerry Saravia)

使您的自定义类实现ServiceLocatorAwareInterface

当您使用ServiceManager实例化它时,它将看到正在实现的接口并将其自身注入到类中。

现在,您的班级将有服务经理在其操作期间与之一起工作。

<?php
namespace My;

use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorAwareTrait;

class MyClass implements ServiceLocatorAwareInterface{
    use ServiceLocatorAwareTrait;


    public function doSomething(){
        $sl = $this->getServiceLocator();
        $logger = $sl->get( 'My\CusomLogger')
    }
}

// later somewhere else
$mine = $serviceManager->get( 'My\MyClass' );

//$mine now has the serviceManager with in.

为什么要这样做?

这仅在Zend \ Mvc的上下文中有效,因为您提到了控制器,所以我假设您正在使用Zend \ Mvc。

之所以有效,是因为Zend\Mvc\Service\ServiceManagerConfig向ServiceManager添加了初始化程序。

$serviceManager->addInitializer(function ($instance) use ($serviceManager) {
    if ($instance instanceof ServiceLocatorAwareInterface) {
        $instance->setServiceLocator($serviceManager);
    }
});

试试看,让我知道会发生什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使serviceManager在类zf2上工作

来自分类Dev

ZF2中的自定义路线类型

来自分类Dev

如何在ZF2中使用自定义例外页面?

来自分类Dev

如何在ZF2表单中制作自定义单选按钮标签?

来自分类Dev

在ZF2中,如何注册自定义的Feed阅读器扩展?

来自分类Dev

ZF2呈现自定义类的表单验证错误

来自分类Dev

如何在ZF2中为单个控制器动作设置自定义标头?

来自分类Dev

如何在ZF2中使用自定义(非标准)HTTP状态代码

来自分类Dev

ZF2学说-使用查询生成器如何指向存储库中的自定义方法

来自分类Dev

如何在ZF2的自定义库文件夹中自动加载所有内容?

来自分类Dev

ZF2:如何将Application ServiceManager配置为自动添加类?

来自分类Dev

如何从自定义视图助手中使用ZF2视图助手

来自分类Dev

如何自定义呈现具有匹配字段集的ZF2集合

来自分类Dev

在ZF2中存储自定义界面的最佳位置

来自分类Dev

ZF2:如何在测试过程中重置ServiceManager

来自分类Dev

zf2 Zend \ ServiceManager \ Exception \ ServiceNotCreatedException

来自分类Dev

ZF2将自定义属性添加到选择表单元素中的选项

来自分类Dev

如何在zf2中使用辅助类?

来自分类Dev

如何从自定义类的列表中获取对象?

来自分类Dev

ZF2-如何从视图中调用自定义类php的函数?

来自分类Dev

如何在zf2中获取最后插入的ID?

来自分类Dev

我如何从zf2中的url获取参数?

来自分类Dev

带有自定义验证器的PHPUnit ZF2 InputFilter

来自分类Dev

ZF2,将变量从控制器传递到自定义元素

来自分类Dev

从实例获取自定义通用类的TypeVars

来自分类Dev

BGL:如何从顶点迭代器获取自定义顶点属性类实例?

来自分类Dev

基于列表定义自定义集合类。如何访问存储在实例中的元素?

来自分类Dev

如何在Android中的自定义dapter类中使用或实例化Sqlite Database Helper类实例?

来自分类Dev

如何计算自定义类的实例数?

Related 相关文章

  1. 1

    如何使serviceManager在类zf2上工作

  2. 2

    ZF2中的自定义路线类型

  3. 3

    如何在ZF2中使用自定义例外页面?

  4. 4

    如何在ZF2表单中制作自定义单选按钮标签?

  5. 5

    在ZF2中,如何注册自定义的Feed阅读器扩展?

  6. 6

    ZF2呈现自定义类的表单验证错误

  7. 7

    如何在ZF2中为单个控制器动作设置自定义标头?

  8. 8

    如何在ZF2中使用自定义(非标准)HTTP状态代码

  9. 9

    ZF2学说-使用查询生成器如何指向存储库中的自定义方法

  10. 10

    如何在ZF2的自定义库文件夹中自动加载所有内容?

  11. 11

    ZF2:如何将Application ServiceManager配置为自动添加类?

  12. 12

    如何从自定义视图助手中使用ZF2视图助手

  13. 13

    如何自定义呈现具有匹配字段集的ZF2集合

  14. 14

    在ZF2中存储自定义界面的最佳位置

  15. 15

    ZF2:如何在测试过程中重置ServiceManager

  16. 16

    zf2 Zend \ ServiceManager \ Exception \ ServiceNotCreatedException

  17. 17

    ZF2将自定义属性添加到选择表单元素中的选项

  18. 18

    如何在zf2中使用辅助类?

  19. 19

    如何从自定义类的列表中获取对象?

  20. 20

    ZF2-如何从视图中调用自定义类php的函数?

  21. 21

    如何在zf2中获取最后插入的ID?

  22. 22

    我如何从zf2中的url获取参数?

  23. 23

    带有自定义验证器的PHPUnit ZF2 InputFilter

  24. 24

    ZF2,将变量从控制器传递到自定义元素

  25. 25

    从实例获取自定义通用类的TypeVars

  26. 26

    BGL:如何从顶点迭代器获取自定义顶点属性类实例?

  27. 27

    基于列表定义自定义集合类。如何访问存储在实例中的元素?

  28. 28

    如何在Android中的自定义dapter类中使用或实例化Sqlite Database Helper类实例?

  29. 29

    如何计算自定义类的实例数?

热门标签

归档