我有一个模型类,它不扩展任何核心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模型类),其中包含一些业务逻辑。
答案 0 :(得分:3)
假设您构建服务(您的代码看起来像服务),您可能会在服务工厂中实例化它(在这种情况下,我将它放在模块配置中):
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);
},
),
);
}
}
这样,您直接在其使用者中注入配置对象(没有对使用者中的服务定位器的引用)
另一种方法是在Zend\ServiceManager\ServiceLocatorAwareInterface
中实施GaGooGl\Http\Request
。我personally discourage it,但这基本上允许您让Request
对象在内部保留对服务定位器的引用,从而可以在运行时检索config
服务。
答案 1 :(得分:0)
检查this。它有两个解决方案。一个是实现服务定位器感知接口。另一种方法是将服务管理器注入您的模型。对于这两者,您需要通过服务管理器实例化您的模型对象。
答案 2 :(得分:0)
最简单的方法
$config = new \Zend\Config\Config( include APPLICATION_PATH.'/config/autoload/global.php' );