Bonjour, j'ai un petit probléme que je n'arrive pas à résoudre merci de bien vouloir m'aider.

Erreur afficher par PHP:

      Parse error: syntax error, unexpected '$name' (T_VARIABLE), expecting identifier (T_STRING) in /home/mehdi/app/Dispatcher.php on line 21

Mon code:

    public function loadController()
        {
            $name = ucfirst($this->request->controller).'Controller.php';
            require ROOT.DS.'controllers'.DS.$name;
            return new \Controllers\$name($this->request);
        }

et je me trouve dans le namespace App;
lorsque je fait :

    return new \Controllers\HomeController()

Sa marche mais j'ai besoin de definir le controller dynamiquement donc j'ai impérativement besoin de la variable.

3 réponses


Mehdi Kamil
Auteur
Réponse acceptée

@Uneo7 ton code ne marche pas, j'ai trouvé une solution j'ai finalement crée une instance de la class en static puis fait un retour de cette instance.
Merci quand même :p

Segmente l'appel, php ne gère pas les appel direct en dur avec des variables et du texte :p

$controller = "Controllers\\" . $name;
$controller = new $controller();
return call_user_func_array($controller, $this->matches);

Oui je suis con x) j'ai repris de mon code sans virer le call_user_func et en plus j'ai foiré sur une variable.

$controller = "Controllers\\" . $name;
return new $controller($this->request);