繁体   English   中英

Zend框架2访问模型类中的全局配置

[英]Zend framework 2 accessing global config in model class

我有一个模型类,它不扩展任何核心Zend模块。 此模型是从我之前的Zend框架1应用程序导入的。 我可以通过将其转换为命名空间来调用它的方法。 我所遇到的问题是在定义的方法中读取全局配置。

在控制器的情况下,我能够使用下面的代码访问全局配置

 $config = $this->getServiceLocator()->get('config'); 

// This gives a union of global configuration along with module configuration .

但是我们应该如何在模型类中访问配置呢。 以下是我的模型类的方法

<?php
namespace test\Http; 

class Request
{

    protected $client;

    public function abc( $c)
    {
        return $something;
    } 


    ......

} 

我是Zend框架2的新手,请提出任何方法来实现这一目标。

在上面的描述中,模型意味着(MVC模型类),其中包含一些业务逻辑。

假设您构建服务(您的代码看起来像服务),您可能会在服务工厂中实例化它(在这种情况下,我将它放在模块配置中):

class MyModule
{
    public function getServiceConfig()
    {
        return array(
            'factories' => array(
                'my_request_object' => function (
                    \Zend\ServiceManager\ServiceLocatorInterface $sl
                ) {
                    $config = $sl->get('config'); 

                    return new \GaGooGl\Http\Request($config);
                },
            ),
        );
    }
}

这样,您直接在其使用者中注入配置对象(没有对使用者中的服务定位器的引用)

另一种方法是在GaGooGl\\Http\\Request实现Zend\\ServiceManager\\ServiceLocatorAwareInterface 个人不鼓励它 ,但这基本上允许你让你的Request对象在内部保持对服务定位器的引用,因此可以在运行时检索config服务。

最简单的方法

$config = new \Zend\Config\Config( include APPLICATION_PATH.'/config/autoload/global.php' ); 

检查一下 它有两个解决方案。 一个是实现服务定位器感知接口。 另一种方法是将服务管理器注入您的模型。 对于这两者,您需要通过服务管理器实例化模型对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM