关于带有操作助手的Zend应用程序的一切。
我想通过函数取消数组的一些对。
helper:
class Application_Controller_Action_Helper_TestHelper extends Zend_Contr[...]
{
public function direct(&$array)
{
if(isset($array['key']))
unset($array['key']);
}
}
controller:
$this->_helper->TestHelper($var);
我怎么能让它工作?
由于您现在是通过引用传递的,因此您可以修改方法中的变量,并且更改将应用于原始变量。但是,现在的方法是根本不改变变量,只是返回表达式的结果,就像第一个示例一样。你应该这样写:
class Application_Controller_Action_Helper_TestHelper extends Zend_Contr[...] {
public function direct(&$var) {
$var = $var + 1;
}
}
您还必须将其作为引用传递:$this->_helper->TestHelper(&$var);
更新:Ups,我把错误关掉了。你(现在我)得到错误,因为…
在函数调用中没有引用符号——只有函数定义。函数定义本身就足以正确传递引用式参数。从PHP 5.3.0开始,您将得到一个警告当您使用&在foo(和一个美元);。
ZF的HelperBroker使用return call_user_func_array(array($helper, 'direct'), $args);
调用您的direct()方法。检查文档,但call_user_func_array
似乎通过引用传递,尽管有几个怪癖。