【问题标题】:How to use Zend\Config (application wide variables)如何使用 Zend\Config(应用程序范围的变量)
【发布时间】:2013-01-05 22:38:14
【问题描述】:

主要问题不言自明,但我将给出一些侧面示例:

  • 我无法确定数据库,但我似乎可以使用 ServiceManager 的东西进行配置

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

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

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

  • 存储验证码公钥/私钥

  • 我还将我的配置文件用于会话变量(与$_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);

【问题讨论】:

  • 不要将会话用于此类事情,这不是会话的目的!
  • @markus-tharkun 那我应该用什么?我记得在 SO 上的一个大的“如何登录用户”(找不到确切的线程)中说要使用会话,除非我完全误解了
  • 是的,没错。关联用户的一些数据完全可以存储在会话中......我的印象是它更多,但我错了。
  • 令我困惑的是你有一个 $config-auth-user 字段,配置不应该包含用户信息。

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


【解决方案1】:

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

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

class UserStorage {
    const SESSIONCONTAINERNAME = 'blubbusersession';
}

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

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

此外,我认为您最好看看zf-commons\ZfcUser 是如何做事的

【讨论】:

  • 它似乎也是从 global.php 和 local.php 文件编译的(在 `root/config/autoload.config.php' 中设置)
  • 顺便说一句,我还有很多其他问题。我在询问之前至少研究了一天(通常会在一夜之间出现一种新方法),但大多数情况下,Zend 1 似乎有很多支持(以前的问题),但 Zend 2 没有。诸如如何优雅地传递数据之类的东西布局(再次,我发现了一个笨拙的解决方案)以及如何检查是否转发了操作。因为这些不是 zend 2 以前问过的问题,所以在这里都可以问吗?从长远来看,我应该弄清楚,但这会为我节省很多时间,并可能为未来的用户节省一些时间
  • 首先你是对的。所有配置文件最终合并在一起。当然,你可以在这里问这一切。有人必须做提问的工作^^
  • 好吧,我不想听起来好像我什么都没试过,因为我还有很多问题!敬请期待更多xD
  • 另外,尽量不要将一个模块中的选项混合到另一个模块中。将它们严格分开。并且为了选项的可重用性并将它们直接转换为正确的类型,请尝试创建一个Options 类。在此处查看课程:github.com/ZF-Commons/ZfcUser/blob/master/src/ZfcUser/Options/… 和此处的工厂:github.com/ZF-Commons/ZfcUser/blob/master/Module.php#L90-L93
猜你喜欢
  • 2013-02-02
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多