2012-02-11 58 views
-2

我想将变量的值放入Zend_Config_Ini的实例中。如何将变量值放入Zend_Config_Ini

举例来说,如果我事先知道这个名字,我可以做这样的事情,

$config->name = $value; 

但因为我在运行时接收的名字,我想做的事:

$config->$var = $value; 

这可能吗?我试过了,它不起作用。这里是我的尝试:

update_settings.php

<?php 
$name = $_POST['key']; 
$new_value = $_POST['new_value']; 

if ($name && $value) 
{ 
    $config = new Zend_Config_Ini('_config/config.ini', null, array('skipExtends' => true, 'allowModifications' => true)); 

    // EDIT 
    $config->$name = $new_value; 

    $writer = new Zend_Config_Writer_Ini(array('config' => $config, 'filename' => 'config.ini')); 

    $json['success'] = $writer->write() 
} 
?> 

如果有人已经能够做到这一点,请告诉我如何。

+1

我会建议反对这样做这样的事情。 – markus 2012-09-28 13:16:08

回答

1

当然是可能的(假设我理解你的问题)。我在这里略微猜测,因为你只是说“它不工作”,这不是我见过的最好的错误信息。

您必须确保您引用的config.ini文件存在,并且您有正确的路径。像这样的东西应该为你工作: -

$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', null, array('skipExtends' => true, 'allowModifications' => true)); 
//The previous line doesn't look quite right in your example. 
$testVariableName = 'test'; 
$testVariableValue = 'testing'; 
$config->$testVariableName = $testVariableValue; 
var_dump($config->test); 

输出: -

string 'testing' (length=7) 
+0

当网站允许我这样做时,我会在12个小时内给你奖励;)谢谢你的回答! – 2012-09-27 07:49:07

+0

没问题,我很高兴你把它整理出来。 – vascowhite 2012-09-27 07:52:11

+0

我也是!经过7个月的错误答案! – 2012-09-27 07:53:05

0

我建议你使用isset PHP Manual函数。

if (isset($_POST['id']) && isset($_POST['value'])) { 

$config = new Zend_Config_Ini('../conf/config.ini',null,array('skipExtends' => true,  'allowModifications' => true)); 
    // EDIT 
    $config->$_POST['id'] = $_POST['value']; 
. 
. 
. 

如果id & value未设置你会得到一个:

Notice: Undefined index: ... 
+1

我不认为这是任何问题的答案,尽管这是很好的建议。 – 2012-02-11 14:41:50

+2

我不认为你可以有效地执行'$ config - > $ _ POST ['id']'。它应该可能是'$ config - > {$ _ POST ['id']}'。 – 2012-09-26 20:51:35