IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Chargement du routeur [POO]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chomeur
    Inscrit en
    Octobre 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 19
    Points : 33
    Points
    33
    Par défaut Chargement du routeur
    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 ?

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    Pourquoi avoir un autoload dans ton router ?

    Ton autoload doit exister une fois au niveau applicatif. Il va donc charger ton router , tes controllers , etc ...

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chomeur
    Inscrit en
    Octobre 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 19
    Points : 33
    Points
    33
    Par défaut
    Voyant que l'architecture final de mon projet necessiterait un autoloader, je pensais qu'il serait plus simple de l'implémenter maintenant. Mais c'est vrai que ce serait mieux de déja compléter complétement le système de CRUD des posts avant de penser au reste.

    Dans ce cas tu me conseille de remplacer (provisoirement) mon spt_autoload_register() par juste require l'ensemble des fichiers ? du moins ceux qui nous intéressent ici ?

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    un peu de lecture :
    - Autoloader
    - MVC 1
    - MVC 2


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Chargement impossible derrière un routeur NAT
    Par langevert dans le forum Apache
    Réponses: 6
    Dernier message: 05/05/2008, 18h47
  2. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 18h16
  3. Quel est le meilleur Routeur-adsl ???
    Par loki dans le forum Développement
    Réponses: 4
    Dernier message: 12/11/2002, 19h05
  4. Connaissez vous un routeur pour ...
    Par loki dans le forum Développement
    Réponses: 3
    Dernier message: 18/09/2002, 10h05
  5. routeur + netmeeting
    Par Vince dans le forum Développement
    Réponses: 5
    Dernier message: 12/07/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo