我对ZendFramework颇为陌生,并试图弄清楚这一点。在我看来脚本(index.phtml),我有这样的一些代码,上面写着:Zend框架查看脚本,函数和变量范围
<?php
function getErrorString($element)
{
echo "<pre>";
print_r($this);
echo "</pre>";
$string = '';
if(!empty($this->error[$element]))
{
$string = $string.'<label class="error" for="'.$element.'" generated="true">';
foreach($this->error[$element] as $error)
{
$string = $string.$error;
}
$string = $string.'</label>';
}
return $string;
}
echo "<pre>";
print_r($this);
echo "</pre>";
getErrorString("blah");
die();
这给了我:
Fatal error: Using $this when not in object context in index.phtml on line XX
它,当你在一个视图中创建一个函数在我看来, ,你失去了$这个变量。我在网上搜索过,我看不到其他人正在做我正在做的事情(极不可能,也许我错了)。
有了开发其他应用程序的经验,我不明白为什么这个函数应该放在一个单独的帮助器中 - >尤其是因为这是函数唯一被调用的地方。
任何想法将不胜感激。
感谢您的快速反应KC! 我不确定我是否明白你的意思。你说你不能在类定义中写任何东西,但是接着说你可以定义方法吗? 此外,我不明白为什么它会打印_ $(this)会起作用,但getErrorString(“blah”)不会。 干杯! – lyf 2010-08-03 06:48:13
@lyf - 由于函数定义没有绑定在类定义中,所以在函数定义中使用“$ this”将不起作用。 – 2010-08-03 06:58:36