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 :
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
        }
    }
}
Mais j'obtiens une Fatal Error m'indiquant :
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
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).

Qu'en pensez vous ?