如何使用Zend \ Config(应用程序范围的变量)

时间:2013-01-05 22:38:14

标签: global-variables zend-framework2 zend-config

主要问题是自我解释,但我会举一些例子:

  • 我在搞清楚数据库时遇到了麻烦,虽然看起来我可以使用ServiceManager来解决配置问题

  • 我想将常量用于cookie名称,因此如果发生碰撞,我可以轻松更改它们。目前,我每次想要访问我的全局config.php文件时都会调用$config = new \Zend\Config\Config(include $_SERVER['DOCUMENT_ROOT'] . '/../config.php');。许多以前的解决方案都在Zend 1中(例如Zend_Registry)。这是正确的方法吗?一遍又一遍地使用它似乎有点笨拙。

  • 有没有办法利用Module的配置文件来设置模块范围的变量/常量?

  • 除非我完全错过它,否则Zend 2中没有application.ini

  • 存储recaptcha公钥/私钥

  • 我也在使用我的配置文件进行会话变量(与$_SESSION[CONST_NAME]相同的想法),这使得上面的配置文件非常笨拙。硬编码会话名称会更好吗?像:


$container = new Zend\Session\Container('auth');
$container->offsetSet('user', $user);
... // instead of 
$container = new Zend\Zession\Container($config['auth']['containername']);
$container->offsetSet($config['auth']['user'], $user);

1 个答案:

答案 0 :(得分:2)

每个module.config.phpModule.php的所有配置都放在一个大锅中。您可以通过$this->getServiceLocator()->get('config')

轻松访问这些内容

当涉及到常量时,它们应该放在各自的类中。像

class UserStorage {
    const SESSIONCONTAINERNAME = 'blubbusersession';
}

这样,只要您需要此信息,就可以致电\My\User\Model\UserStorage::SESSIONCONTAINERNAME

就您的示例而言,我们几乎不需要var-code您的会话容器名称,因为模块会话数据中的信息应该通过您的模块提供{{1} }。但如果您仍然需要它,请参阅上面的示例。

此外,我认为你可以查看zf-commons\ZfcUser如何做事