"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Explication détaillée des normes de chargement automatique PSR dans PHP

Explication détaillée des normes de chargement automatique PSR dans PHP

Publié le 2025-04-29
Parcourir:635

PSR-Autoloading Standard in PHP

ahnii!

Rappelez-vous le manuel de Php nécessite jours? La semaine dernière, j'ai aidé une équipe à mettre à niveau son application héritée - plus de 50 exigent instructions par fichier! Voyons comment PSR-4 Autoloading résout ceci.

Comprendre psr-4 (5 minutes)

psr-4 est le localisateur de fichiers automatique de votre code. Comme un GPS utilisant des adresses, PSR-4 utilise des espaces de noms pour trouver des classes.

concepts clés (2 minutes)

  1. Nom de classe entièrement qualifiée (fqcn): vendor \ package \ class . Considérez-le comme l'adresse complète de votre classe.
  2. Structure du répertoire: Un répertoire de projet bien organisé avec des mappings de l'espace de noms à la direction.

Exemple du monde réel (10 minutes)

Structure du projet:

vendor/
└── jonesrussell/
    └── blog/
        ├── composer.json
        └── src/
            └── Post/
                ├── PostController.php
                └── PostRepository.php

composer.json

:

{ "Nom": "Jonesrussell / Blog", "Autoload": { "psr-4": { "Jonesrussell \\ blog \\": "src /" } } }
{
    "name": "jonesrussell/blog",
    "autoload": {
        "psr-4": {
            "JonesRussell\\Blog\\": "src/"
        }
    }
}

postController.php

:

Php Espace de noms jonesrussell \ blog \ post; classe post-contrôleur { Index de fonction publique () { return ['status' => 'prêt à bloguer!']; } }
 'Ready to blog!'];
    }
}

Roots d'espace de noms multiples:

{ "Autoload": { "psr-4": { "Jonesrussell \\ blog \\": "src /", "Jonesrussell \\ Blog \\ Tests \\": "Tests /" } } }
{
    "autoload": {
        "psr-4": {
            "JonesRussell\\Blog\\": "src/",
            "JonesRussell\\Blog\\Tests\\": "tests/"
        }
    }
}
src / core / database / connection.php

)

Php Espace de noms Jonesrussell \ Blog \ Core \ Database; Connexion de classe { $ private config; fonction publique __construct (array $ config) { $ this-> config = $ config; } }
config = $config;
    }
}

Laravel et Symfony utilisent PSR-4 par défaut.

Laravel Exemple:

Php Namespace App \ Http \ Controllers; Class BlogController étend le contrôleur { Index de fonction publique () { Return View ('blog.index'); } }

Php Namespace App \ Controller; Utilisez Symfony \ bundle \ frameworkbundle \ contrôleur \ abstractController; Class BlogController étend AbstractController { Index de fonction publique (): réponse { return $ this-> render ('blog / index.html.twig'); } }
render('blog/index.html.twig');
    }
}

    "classe non fondée" erreurs:
  • run Composer Dump-Autoload .
  • Problèmes de structure du répertoire:
  • Assurez-vous que votre structure de répertoire correspond à vos espaces de noms (sensible à la casse!).
  • test (2 minutes)

crée

test-uutoload.php

:

Php exiger «fournisseur / autoload.php»; $ contrôleur = new \ jonesrussell \ blog \ poster \ postController (); var_dump ($ contrôleur-> index ()); // devrait sortir "prêt à bloguer!"
index()); // Should output "Ready to blog!"

Ensuite, nous couvrirons PSR-6 (mise en cache). Cela fait partie de notre série PSR Standards.

Ressources

Spécification PSR-4 officielle
  • Documentation en fonction automatique des compositeurs
  • Exemple de série Repository (V0.3.0 - Implémentation PSR-4)
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3