Salut tous le monde !

Finalement j'ai décider de m'inscrire pour poser la question car ça fait très longtemps que je cherche sur internet sans rien trouver!
Donc voila je suit le tuto http://www.grafikart.fr/tutoriels/php/developper-site-jour2-structure-php-184
Mais je suis bloquer accuse de ça:

call_user_func_array(array($controller,$this->request->action),$this->request->params);

Ça M'affiche:

Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in C:\wamp\www\tuto\site\core\Dispatcher.php

!!

Help me please
Merci cordialement Nicha

5 réponses


djtec
Réponse acceptée

Normal c'est:

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

Car si tu retourne rien dans loadController et ben $controller vaudra rien

Koeur
Auteur

Coucou personne pour me répondre ?

Hello, tu peux nous envoyer le résultat de la variable $controller en print_r?

Koeur
Auteur

Merci PHiSyx

Ba j'ai déjà essayer avec var_dump ça m'affiche ça:

Notice: Undefined variable: controller in C:\wamp\www\tuto\site\core\Dispatcher.php on line 23

Call Stack

#   Time    Memory  Function    Location

1   0.0007  369592  {main}( )   ..\Index.php:0

2   0.0011  371872  require( 'C:\wamp\www\tuto\site\core\Includes.php' )    ..\Index.php:21

3   0.0059  392816  require( 'C:\wamp\www\tuto\site\core\Dispatcher.php' )  ..\Includes.php:5

null

Que faire ? je suis vraiment désespérer

Voici le code entier:

<?php
class Dispatcher{

    var $request;

    function __construct(){
       $this->request = new Request ();
       Router::parse($this->request->url,$this->request);
       $controller = $this->loadController();
       call_user_func_array(array($controller,$this->request->action),$this->request->params);

    }

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

   }

   }
  var_dump($controller);
   ?>

Merci encore

Koeur
Auteur

Merci beaucoup djtec ^^
Enfin je vais reprendre le tuto !

Ps: Désolée j'ai pas pu te répondre plutôt