Я довольно новичок в ZendFramework и пытаюсь понять это. На мой взгляд, сценарий (index.phtml), у меня есть кусок кода, который говорит:Скриншот, функции и область видимости Zend Framework
<?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! Я не уверен, понимаю ли вы, что вы имеете в виду. Вы сказали, что не можете написать что-нибудь еще в определении класса, но потом сказали, что вам разрешено определять методы? Кроме того, я не понимаю, почему он будет печатать _ $ (это) будет работать, но getErrorString ("blah") не будет. Приветствия! – lyf
@lyf - Поскольку определение вашей функции не привязано к определению класса, поэтому использование «$ this» в определении функции не будет работать. –