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

Commentaires

  1. Avatar de laurentSc
    • |
    • permalink
    Bonsoir,

    ton cas pratique s'adresse pas aux débutants...Je m'attendais à ce qu'il réponde à mes interrogations mais c'est à 100 lieux de ce que j'imaginais...et bien plus compliqué que ce que je pensais. Je vais encore passer du temps dessus, mais gros risque que je ne m'en sorte pas....

    Sinon, il faudrait préciser qu'il faut PHP7 car j'étais en 5.6 et ça marchait pas. Mais en PHP7, ça va mieux, mais ton appli marche pas encore : y a des fatal errors...
  2. Avatar de laurentSc
    • |
    • permalink
    Bonjour,

    ayant démarré la lecture du tout nouveau billet sur le mvc (https://www.developpez.net/forums/bl...-cas-pratique/), on y parle au début de autoloader et de namespace. Ayant déjà utilisé l'autoloading mais jamais les namespaces, j'ai pensé qu'il fallait commencer par maîtriser cela. J'ai donc essayé d'adapter mon script de autoloading avec les namespaces. Mais j'ai l'erreur fatale du titre. Peux-tu me dire pourquoi ?

    index.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    use rep_classes\MaClasse1;
    use rep_classes\MaClasse2;
    //autoloading
    include_once 'Autoloader.php';
     
    Autoloader::register();
     
    $obj  = new MaClasse1();
    $obj2 = new MaClasse2();
     
    debug($obj);
    debug($obj2);
    (debug=version améliorée de var_dump)

    Autoloader.php :
    Code php : 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
    class Autoloader {
    static function register() {
        define('DIR_ROOT', __DIR__.DIRECTORY_SEPARATOR);
     
        $autoloader = function($full_class_name) {
            // on prépare le terrain : on remplace le séparteur d'espace de nom par le séparateur de répertoires du système
            $name = str_replace('\\', DIRECTORY_SEPARATOR, $full_class_name);
            // on construit le chemin complet du fichier à inclure :a
            // il faut que l'autoloader soit toujours à la racine du site
            $path = DIR_ROOT.$name.'.php';
     
            // on vérifie que le fichier existe et on l'inclut
            // sinon on passe la main à une autre autoloader (return false)
            if (is_file($path)) {
                include $path;
                return true;
            } else {
                return false;
            }
        };
        spl_autoload_register($autoloader);
    }
    }

    _classes/rep_classes/Ma_classe1.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    namespace rep_classes\MaClasse1;
     
    class MaClasse1 {
        public $varmaclasse1=1;
    }

  3. Avatar de laurentSc
    • |
    • permalink
    Au sujet de ta définition du rôle des 3 éléments (modèle, vue et contrôleur), j'avais retenu les définitions suivantes :
    modèle : récupération des données (par exemple, requêtes SQL) ;
    vue : affichage ;
    contrôleur : traitements.
    Plus faciles à retenir que les tiennes ; qu'en penses-tu ?

    vous configurez le serveur web afin que lui se charge d'effectuer la redirection (ma solution préférée)
    l'implémentation de ça ne ressemble-t-elle pas à mettre RewriteRule ^([a-zA-Z0-9_\-]*)?/?$ index.php?page=$1&%{QUERY_STRING} dans le fichier .htaccess ?

    Comme vous n'êtes pas sans le savoir
    oui, grâce à un certain rawsrc...
  4. Avatar de laurentSc
    • |
    • permalink
    Bravo pour la réactique Je me suis abonné à ton blog et en moins d'un quart d'heure, j'ai reçu un mail ; je commence ma lecture...
  5. Avatar de rawsrc
    • |
    • permalink
    Salut,

    L'autoloader doit être chargé et déclaré au moins une fois à chaque appel.
  6. Avatar de Meiyo40
    • |
    • permalink
    Salut,

    Je suis en train de créer mon premier site en php et on m'a demandé d'utiliser un autoloader.

    Je comprends parfaitement le concept et je le trouve même séduisant, seulement je n'arrive pas à le mettre en oeuvre du coup j'ai quelques questions...

    la fonction & spl_autoload_register est appelé automatiquement par le serveur où il faut le placer quelque prat plus spécifiquement (Routeur, controleur?).

    Je bloque dessus et je ne comprends même pas pourquoi... Et ca m'énnerve d'autant plus que pour le coup je, n'arrive pas à faire autre chose car je n'arrive pas a mettre en place ce bête autoloader...
    C'est extrêmement frustrant car j'avançais plutôt correctement et je voyais la fin de la "base" j'étais en train de retravailler les classes quand on m'a suggéré l'autoloader, et plus rien ne va... je bug littéralement dessus...

    Mes classes démarrent ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    use model\services\Database;
    
    namespace model\manager;
    
    class CommentManager{
    et voilà l'arbo du projet:
  7. Avatar de enterprise
    • |
    • permalink
    Bonjour, et merci Raw!

    Pour les vacances et jours fériés qui "bougent' on pourrait les mettre dans une BDD et du coup donner le moyen aux administrateur de modifié ça dans un back-office?
  8. Avatar de Dendrite
    • |
    • permalink
    Merci aussi pour ça, Raw.
    J'avais du mal à comprendre ces namespaces, enfin je comprenais bien l'intérêt théorique, mais je ne voyais pas comment les intégrer dans ma partition. J'adopte et je reviens vers toi si j'ai des questions !
  9. Avatar de Dendrite
    • |
    • permalink
    Bonjour Raw !
    Merci pour la fonction, j'ai justement besoin d'un outil de ce genre en ce moment !
    Je ne comprends juste pas comment on gère l'ascension ou la pentecôte, car elles sont à des dates différentes chaque année...
Page 4 sur 4 PremièrePremière 1234