Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

<?php 
class Dispatcher{

    var $request;

    function __construct(){
        $this->request = new REQUEST();
        Router:: parse($this->request->url,$this->request);
        $controller = $this->loadController();
        $controller->view();
    }

    function loadController(){
        $name = ucfirst($this->request->controller).'Controller';
        $file = ROOT.DS.'controller'.DS.$name.'.php';
        require $file;
        $controller = new $name($this->request);
    }
}
 ?>

Ce que je veux

"vous voyez" sur ma page

Ce que j'obtiens

Fatal error: Call to a member function view() on null in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Tuto\site\core\Dispatcher.php on line 10

4 réponses


Bonjour,

à ta ligne 10 tu fais :

$controller->view();

Mais ton erreur (qu'il faut lire hein... parce qu'elle est assez claire) te dit que $controller est null et que donc il ne connait pas la méthode view() sur cet objet qui est null. Tu dois donc regarder ta fonction loadController() si tout se passe correctement. Et tu verras rapidement qu'il te manque quelque chose ;)

la fonction var_dump est ton ami en debug.
pour tester, tu peux ajouter cette ligne :

$controller = $this->loadController();
var_dump($controller); // va te retourner null mais ne devrait pas.
$controller->view();
PKR
Auteur

merci pour vos reponse si rapide

La méthode loadController devrait retourner le controller, là elle ne retourne rien, d'où l'erreur.