J'ai suivi ce tuto :
Tutoriel vidéo PHP : Développer un site : Jour 2, La structure PHP
Voici les erreurs qui me sont retourné:
( ! ) Warning: require(C:\wampserver\www\precandidature\controller\Controller.php): failed to open stream: No such file or directory in C:\wampserver\www\precandidature\core\Dispatcher.php on line 14
( ! ) Fatal error: require(): Failed opening required 'C:\wampserver\www\precandidature\controller\Controller.php' (include_path='.;C:\php\pear') in C:\wampserver\www\precandidature\core\Dispatcher.php on line 14
ET voilà mon code :
<?php
class Dispatcher{
var $request;
function __construct(){
$this->request = new Request();
Router::parse($this->request->url,$this->request);
$controller = $this->LoadController();
$controller->voir();
}
function LoadController(){
$name = ucfirst($this->request->controller).'Controller';
$file = ROOT.DS.'controller'.DS.$name.'.php';
require $file;
return new $name($this->request);
}
}
<?php
class Request{
public $url; // URL appelé par l'utilisateur
function __construct(){
$url = (isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : substr($_SERVER['REQUEST_URI'], strlen(BASE_URL)-strlen($_SERVER['REQUEST_URI'])));
$this->url = $url;
}
}
?>
<?php
class PagesController extends Controller{
fonction voir(){
echo 'Merci';
}
}
?>
<?php
class Router{
static function parse($url,$request){
$url = trim($url,'/');
$params = explode('/',$url);
$request->controller = $params[0];
$request->action = isset($params[1]) ? $params[1] : 'index';
$request->params = array_slice($params,2);
return true ;
}
}
?>
<?php
class Controller{}
?>
<?php
require 'Request.php';
require 'Router.php';
require 'Controller.php';
require 'Dispatcher.php';
?>
<?php
define('WEBROOT', dirname(__FILE__));
define('ROOT', dirname(WEBROOT));
define('DS', DIRECTORY_SEPARATOR);
define('CORE', ROOT.DS.'core');
define('BASE_URL', dirname(dirname($_SERVER['SCRIPT_NAME'])));
require CORE.DS.'includes.php';
new Dispatcher();
?>
Mon arborescence est :
0-www
1-precandidature
2-controller -> PagesControllers.php
2-core -> Controller.php + Dispatcher.php + Router.php + Request.php + includes.php
2-model
2-view
2-webroot -> css + img + js + index.php + .htaccess
.htaccess
Bonjour,
Il ne trouve pas ce fichier : C:\wampserver\www\precandidature\controller\Controller.php car la variable $this->request->controller n'existe pas.
Merci pour votre réponse j'ai ecrit le même code de tuto vraiment je ne sais pas ou est la difference merci de me dire ou je peux declarer la variable
J'ai modifier "fonction" par function mais toujours il m'affiche le meme message d'erreur ci dessus sur n''importe quelle url j'ai le meme code de ce tuto
( ! ) Warning: require(C:\wampserver\www\precandidature\controller\CssController.php): failed to open stream: No such file or directory in C:\wampserver\www\precandidature\core\Dispatcher.php on line 14
Voila le Fichier .htacces qui se trouve dans la racine de mon site
RewriteEngine On
RewriteRule (.*) webroot/$1 [L]
.htaccess dans webroot
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]
Bonjour, est ce que tu as essayer de voir ou pointe la constante ROOT avec un var_dump et voir le contenu de la variable $file ?