Salut,

Je suis arrivé à la dernière question de la vidéo sur les namespace, je reçoi toujours l'erreur "Veuillez compléter la fonction..." par contre mon code m’apparaît logique, je l'ai testé chez moi et ça marche, avez vous une idée sur l"erreur ?

tout d'abord voici l’énoncé :

  • Complétez la fonction render de Controller pour qu'elle retourne le résultat la fonction render de Template avec "html" en contentType. Pour finir, dans le namespace global, affichez le résultat de l'appel à la fonction render du Controller avec le paramètre « Hello World ! ».

et voila le code :

<?php
namespace Tuto\Controller {
    function render($chaine){
        return \Tuto\Template\render($chaine, "html");
    }
}
namespace Tuto\Template {
    function render($chaine, $contentType = "text"){
        if(\strtolower($contentType) == "html"){
            return "".$chaine."";
        } else {
            return $chaine;
        }
    }
}
namespace {
   echo \Tuto\Controller\render("Hello World !");
}
?>

Merci

4 réponses


Grafikart
Réponse acceptée

Surement un pb avec le Regexp qui test la réponse :)

stitox
Auteur

hahaha je vois :)

J'ai eu le même soucis.
J'avais comme code

<?php
namespace Tuto\Controller {
    function render($chaine){
        return \Tuto\Template\render($chaine, "html");
    }
}
namespace Tuto\Template {
    function render($chaine, $contentType = "text"){
        if(\strtolower($contentType) == "html"){
            return "".$chaine."";
        } else {
            return $chaine;
        }
    }
}
namespace {
        echo Tuto\Controller\render(" Hello World ! ");
}
?>

Qui fonctionne très bien en local, le problème au niveau de la regExp c'est qu'elle valide uniquement si l'ont ne met pas de backslashs dans le return du render Controller :

return Tuto\Template\render($chaine, "html");

Si l'on fais ainsi le tuto se valide, mais c'est sensé retourner ceci : Call to undefined function Tuto\Controller\Tuto\Template\render(); à corriger donc.

Erreur dans la Regex, il manquai la prise en compte du backslash avant Tuto à chaque fois x)