Bonjour tout le monde,
En ce moment je suis sur un moteur de blog CRUD en PHP sans framework, que je dois concevoir en POO et en respectant un pattern MVC (c'est mon premier projet en PHP).
J'ai donc commencé à créer ma classe Router :
Mais j'obtiens une Fatal Error m'indiquant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 <?php use OC4\Model; class Router { private $ctrl; public function routeReq() { try { //Class Autoload spl_autoload_register(function($class) { require_once($class.'.php'); }); $url=''; if(isset($_GET['url'])) //isset() -> Determine if a variable is declared and is different than null { //explode() -> Split a string by a string $url = explode('/', filter_var($_GET['url'], FILTER_SANITIZE_URL)); //strltolower() -> Other letter in lower case IN ucfirst() -> First letter in uppercase $controller = ucfirst(strtolower($url[0])); $controllerClass = 'Controller'.$controller; $controllerFile = 'controller/'.$controllerClass.'.php'; if(file_exists($controllerFile)) { require_once($controllerFile); $this->ctrl = new $controllerClass($url); } else { throw new Exception('Page introuvable'); } } else { require_once('controller/ControllerHome.php'); $this->ctrl = new ControllerHome($url); } } catch(Exception $exception) { $errorMsg = $exception->getMessage(); //TODO: view/viewError } } }
Le problème viendrait donc de la ligne de l'autoload. J'ai l'impression que le problème viendrait des namespaces, ou que l'autoload ne va pas chercher au bon endroit, j'ai parlé du problème avec un ami et il m'a dit que le problème venait peut être du fait que dans le cas présent, on aurait besoin que le dossier correspondant à OC4\Model soit présent à l'intérieur du dossier controller (où est situé Router).Warning: require_once(OC4\Model\PostManager.php): failed to open stream: No such file or directory in C:\wamp64\www\OC-Project-4\controller\Router.php on line 18
Qu'en pensez vous ?
Partager