Problème avec controller.php dans la vidéo Tutoriel PHP - Développer un site : Jour 2, La structure PHP erreur :

! ) Notice: Trying to get property of non-object in C:\wamp\www\Tuto\Site\core\Controller.php on line 13
Call Stack

Time Memory Function Location
1 0.0009 245512 {main}( ) ..\index.php:0
2 0.0037 269424 Dispatcher->__construct( ) ..\index.php:9
3 0.0042 275864 call_user_func_array:{C:\wamp\www\Tuto\Site\core\Dispatcher.php:10} ( ) ..\Dispatcher.php:10
4 0.0043 276240 PagesController->view( ) ..\Dispatcher.php:10
5 0.0043 277240 Controller->render( ) ..\PagesController.php:

21 réponses


Bonjour pour commencer ;)

Ensuite, l'erreur parle d'elle-même: tu as oublié d'instancier ta classe quelque part visiblement.

bonjour,
Ok merci je regarde.

C bon c régler merci mais maintenant il me marque ca :

( ! ) Warning: require(C:\wamp\www\Tuto\controller\ViewController.php): failed to open stream: No such file or directory in C:\wamp\www\Tuto\core\Dispatcher.php on line 16
Call Stack

Time Memory Function Location

1 0.0006 245416 {main}( ) ..\index.php:0
2 0.0029 269312 Dispatcher->__construct( ) ..\index.php:9
3 0.0029 270440 Dispatcher->loadController( ) ..\Dispatcher.php:9

( ! ) Fatal error: require(): Failed opening required 'C:\wamp\www\Tuto\controller\ViewController.php' (include_path='.;C:\php\pear') in C:\wamp\www\Tuto\core\Dispatcher.php on line 16
Call Stack

Time Memory Function Location

1 0.0006 245416 {main}( ) ..\index.php:0
2 0.0029 269312 Dispatcher->__construct( ) ..\index.php:9
3 0.0029 270440 Dispatcher->loadController( ) ..\Dispatcher.php:9

Regarde si tu n'as pas de soucis de nommage de tes fichiers. J'avais souvent ce genre d'erreur lorque j'ai commencé à coder en PHP et c'est très souvent à du à la casse (minuscules / Majuscules) !

non rien du genre ....

Alors:

  • soit le fichier n'existe pas
  • soit il n'a pas les bonnes permissions pour être lu
  • soit il y a un soucis de casse

ca te derange de juste regarder mon code et ma structure ? car pour moi tout est bon ....

C/C le contenu de dispatcher.php à la limite & aussi l'endroit où tu l'appelles.

ok, le dispacher est stocké dans wamp/www/Tuto/core/Dispacher.php
Dispacher.php :

<?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;
    return new $name($this->request);
}

}
?>

j'en suis qu'au jour 2 ....

Et ton fichier s'appelle bien "ViewController.php" avec les Majuscules aux bons endroits ?

je l'avais mais je en l'ai plus ....

Beh voilà d'où vient le problème; Tu essayes d'appeler un fichier qui n'existe pas. Donc PHP te retourne une erreur c'est évident.
Pour n'existe-t-il plus ?

je sais pas je l'avais créé mais il a disparu j'ai du le supprimer par erreur ...

dans la vidéo ou c'est indiquer qu'il faut creer ViewController.php ?

Je n'en sais rien je n'ai jamais fait cette formation.
Mais si ce fichier a été créé c'est pour quelque chose. Donc il te faudra le recréer pour que ça re-fonctionne.

ok il contient quoi le fichier ViewController.php ?

je ne comprend pas j'i suivis la vidéo a la lettre et il me met des erreurs ...

Tu as lu ce que je t'ai répondu ou bien ?
Refais la partie du tuto et réécris le fchier.

c ce que j'ai fais toute l'aprem et tjrs le meme resultat

C'est que l'erreur se situe en amont. Ca a fonctionné à un moment donné ?

non j'ai toujours eu des erreurs alors que je suivais tout