首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Zend_Registry :如何在Zend_Registry中取消密钥?

Zend_Registry :如何在Zend_Registry中取消密钥?
EN

Stack Overflow用户
提问于 2009-03-05 17:51:56
回答 5查看 6.7K关注 0票数 4

我正在测试我的Zend应用程序,并希望测试在注册表中没有设置特定键时发生的事情。这是我正在测试的功能:

代码语言:javascript
运行
复制
protected function getDomainFromConfig() {
    $config = Zend_Registry::get('config');
    if (!isset($config->domain)) {
        throw new Exception('Please make sure you have "domain" set in your config file and your config file is being set in the Zend_Registry.');
    }
    return $config->domain;
}

如何取消注册表中的项?我试过了,但没用:

代码语言:javascript
运行
复制
$config = Zend_Registry::get('config');
$config->__unset('domain');

更新:我真正想知道的是,当没有设置配置文件中的“域”键时,我应该如何测试我的方法抛出异常。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-03-06 12:56:18

更改config对象值的唯一真正方法是将其转储到变量中,取消所述项,要求注册表删除配置项,然后重置它。

代码语言:javascript
运行
复制
<?php
$registry = Zend_Registry::getInstance();
$config = $registry->get('config');
unset($config->domain);
$registry->offsetUnset('config');
$registry->set('config', $config);
?>

但是,要使其工作,您必须先将Zend_Config对象设置为可编辑,然后才能第一次将其设置到注册表中。

您应该考虑到以这种方式编辑注册表不是最佳做法。特别是,一旦最初实例化了Zend_Config对象,它就被设计为静态对象。

我希望我对你的问题有足够的了解!

票数 8
EN

Stack Overflow用户

发布于 2009-03-05 17:56:18

如果您的“配置”实际上是Zend_Config,那么默认情况下它是只读的。Zend_Config构造函数的可选第二个参数是布尔$allowModifications,默认设置为false

您可能会在Zend_Config_Ini中创建bootstrap.php

代码语言:javascript
运行
复制
new Zend_Config_Ini(APPLICATION_PATH . '/config/app.ini', 
                    APPLICATION_ENVIRONMENT)

附加$allowModifications param:

代码语言:javascript
运行
复制
new Zend_Config_Ini(APPLICATION_PATH . '/config/app.ini', 
                    APPLICATION_ENVIRONMENT, 
                    true)
票数 1
EN

Stack Overflow用户

发布于 2009-03-05 18:21:16

尝试:

代码语言:javascript
运行
复制
unset($config->domain);

然后用修改后的$registry->config类重新注册Zend_Config。请注意,正如vartec所说,您必须将Zend_Config实例实例化为可编辑的:

代码语言:javascript
运行
复制
$config = new Zend_Config('filename', true);

您试图调用的__unset方法是在实例上使用unset时调用的魔术法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/615837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档