Bonjour tout le monde je post car je me retrouve avec une erreur asser ennuyeuse car je n'arrive pas a mettre la main sur le probleme ou du moin l'enlever ...
Il m'affiche une belle erreur
Fatal error: Call to undefined function get_classed_methods() in C:\wamp\www\core\Dispatcher.php on line 10
qui se trouve la ,
<?php
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request();
Router::parse($this->request->url,$this->request);
$controller = $this->loadController();
if(!in_array($this->request->action,get_classed_methods($controller))){
$this->error('Le controller'.$this->request->controller.'n\'a pas
de méthode '.$this->request->action);
}
call_user_func_array(array($controller,$this->request->action),$this->
request->params);
$controller->render($this->request->action);
}
function error($message){
$controller= new Controller($this->request);
$controller->set('message'.$message);
$controller->render('/errors/404');
die();
}
function loadController() {
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php'; /*a modifer*/
require $file;
$controller = new $name($this->request);
}
}
j'au regardé le tuto jusqu'a la fin et meme re-regardé mais srx je trouve que daaaaale . Si quelqu'un trouver se qui m''de =')
L'erreur parle d'elle même, ce n'est pas
get_classed_methods
mais
get_class_methods
Bonjours :
<?php
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request();
Router::parse($this->request->url,$this->request);
$controller = $this->loadController();
if(!in_array($this->request->action,get_class_methods($controller))){
$this->error('Le controller'.$this->request->controller.'n\'a pas
de méthode '.$this->request->action);
}
call_user_func_array(array($controller,$this->request->action),$this->
request->params);
$controller->render($this->request->action);
}
function error($message){
$controller= new Controller($this->request);
$controller->set('message'.$message);
$controller->render('/errors/404');
die();
}
function loadController() {
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php'; /*a modifer*/
require $file;
$controller = new $name($this->request);
}
}
Voila :)
merci pour class_method mais la jme heurte encore a une erreur ...
Warning: in_array() expects parameter 2 to be array, null given in C:\wamp\www\core\Dispatcher.php on line 10
et celle la
Warning: require(C:\wamp\www\view\pages\/errors/404.php) [function.require]: failed to open stream: No such file or directory in C:\wamp\www\core\Controller.php on line 18
Fatal error: require() [function.require]: Failed opening required 'C:\wamp\www\view\pages\/errors/404.php' (include_path='.;C:\php\pear') in C:\wamp\www\core\Controller.php on line 18
les "\/" sortent de nul part ! a ne rien comprendre ^^
Hum....
<?php
/**
* Dispatcher
* Permet de charger le controller en fonction de la requête utilisateur
**/
class Dispatcher{
var $request; // Object Reques
/**
* Fonction principale du dispatcher
* Charge le controller en fonction du routing
**/
function __construct(){
$this->request = new Request();
Router::parse($this->request->url,$this->request);
$controller = $this->loadController();
$action = $this->request->action;
if($this->request->prefix){
$action = $this->request->prefix.'_'.$action;
}
if(!in_array($action , array_diff(get_class_methods($controller),get_class_methods('Controller'))) ){
$this->error('Le controller '.$this->request->controller.' n\'a pas de méthode '.$action);
}
call_user_func_array(array($controller,$action),$this->request->params);
$controller->render($action);
}
/**
* Permet de générer une page d'erreur en cas de problème au niveau du routing (page inexistante)
**/
function error($message){
$controller = new Controller($this->request);
$controller->e404($message);
}
/**
* Permet de charger le controller en fonction de la requête utilisateur
**/
function loadController(){
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
if(!file_exists($file)){
$this->error('Le controller '.$this->request->controller.' n\'existe pas');
}
require $file;
$controller = new $name($this->request);
return $controller;
}
}
sa marche la ? (J'ai pris mon code)
Haaaa jai essayer ton code malgrer des erreur encore la mais j'ai remarquer que je n'avait pas mis return a la fin du code xD
un return placer => une belle page sans erreur ^^