Je suis plutôt nouveau à ZendFramework et j'essaie de comprendre cela. Dans mon script de vue (de index.phtml), j'ai ce petit morceau de code qui dit:Zend Framework vue script, les fonctions et la portée variable
<?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();
Cela me donne:
Fatal error: Using $this when not in object context in index.phtml on line XX
Il me semble que lorsque vous créez une fonction dans une vue , vous perdez $ cette variable. J'ai fait des recherches autour du net, et je ne vois personne d'autre qui essaie de réaliser ce que je fais (très improbable, peut-être que je me trompe). Avec l'expérience du développement d'autres applications, je ne vois pas pourquoi cette fonction devrait être placée dans une aide séparée - d'autant plus que c'est le seul endroit où la fonction sera appelée.
Toutes les idées seraient grandement appréciées.
Merci pour la réponse rapide KC! Je ne suis pas sûr de comprendre ce que vous voulez dire. Vous avez dit que vous ne pouvez rien écrire d'autre dans la définition de classe, mais vous avez ensuite dit que vous êtes autorisé à définir des méthodes? En outre, je ne vois pas pourquoi cela va imprimer _ $ (ceci) fonctionnerait, mais getErrorString ("blah") ne fonctionnerait pas. À la votre! – lyf
@lyf - Puisque votre définition de fonction n'est pas liée dans une définition de classe, l'utilisation de "$ this" dans la définition de la fonction ne fonctionnera pas. –