La POO en PHP (10/31) : L’autoloading

Php

Video is ready, Click Here to View ×


Article ► https://grafikart.fr/tutoriels/autoload-561
Abonnez-vous ► https://bit.ly/GrafikartSubscribe

On conseille toujours de séparer les classes dans différents fichiers. Le problème c’est que l’on est obligé ensuite de faire beaucoup de require pour charger nos différentes classes. Heureusement l’autoloading nous permet de reméditer à ce problème en incluant les classes dès que l’on en a besoin.

Soutenez Grafikart:
Devenez premium ► https://grafikart.fr/premium
Donnez…

9 thoughts on “La POO en PHP (10/31) : L’autoloading

  1. Bonjour, encore merci pour l'effort que tu fournis pour nous transmettre ce savoir. j'ai petit soucis dans ta logique de programmation, tu nous donnes ce code if(strpos($class,__NAMESPACE__.'\) === 0) {…} nous permet juste de charger nos propres namespaces. j'ai essayé de mettre en place un code pour charger les namspaces préférés, j'obtiens une erreur lorsque je copie l'autoloder dans le dossier Core

    <?php
    /**
    * Created by PhpStorm.
    * User: Osée Botendju
    * Date: 18/01/2018
    * Time: 10:44
    */

    namespace Market243;

    class Autoloader
    {
    public static function register()
    {
    spl_autoload_register([__CLASS__, 'autoload']);
    }

    public static function autoload($class)
    {
    $namespace_allow = ['Market243','Core'];
    $namespace_checked = explode('\',$class);
    if (in_array($namespace_checked[0],$namespace_allow) {
    $class = str_replace($namespace_checked[0] . '\', '', $class);
    $class_name = str_replace('\', '/', $class);
    require _DIR_ . '/' . $class_name . '.php';
    }
    }
    }

    quand je crée ce fichier dans le dossier Core et quej'esaye de charger une class qui a le namespace Core, j'obtiens une erreur. sans oublié que j'utilise la fonction static load() créée dans le App.php pour charger les autoloaders.

  2. Salut!
    Petite question
    J'ai grosso modo le même code que toi
    J'ai un controller frontal qui fait un require de core/Autoloader.php cependant PHP me lève une erreur quand je met le namespace dans ma classe Autoloader.php :

    "Fatal Error : Class Autoloader Not Found in .."

    Si j'enlève le namespace, ma classe charge bien toutes les autres et je n'ai pas de soucis. J'aimerais comprendre alors pourquoi réagit-elle comme celà ? Pourquoi ne puis-je pas mettre ce namespace sur ma class Autoloader ?

    Merci! super tuto!

  3. Bonjour et merci beaucoup pour cette formation qui m'a permis de mieux appréhender les méthodes dîtes static.
    Cela dit j'ai une petite question m'est venue. Lors de la réalisation de la class Autoloader on utilise la méthode register() pour utiliser le système d'autoloader. Ce que je me demande c'est, est ce qu'on peut mettre un constructeur en static, et donc ne pas avoir à faire un appel a une méthode.Bon sur le coup ça me parrait un peu tiré par les cheveux mais je préfère quand même demander.
    Ah et autre petite question, est-ce une bonne ou mauvaise pratique de faire Autoloader::register() directement dans le fichier Autoloader.php juste après la class, ce qui nous permettrait de ne faire qu'un require dans le fichier index.php.

Leave a Reply

Your email address will not be published. Required fields are marked *