Maison > développement back-end > tutoriel php > Norme de chargement automatique PSR en PHP

Norme de chargement automatique PSR en PHP

Barbara Streisand
Libérer: 2025-01-11 16:04:44
original
358 Les gens l'ont consulté

PSR-Autoloading Standard in PHP

Ahnii !

Vous vous souvenez du manuel PHP require jours ? La semaine dernière, j'ai aidé une équipe à mettre à niveau son ancienne application – plus de 50 require déclarations par fichier ! Voyons comment le chargement automatique du PSR-4 résout ce problème.

Comprendre le PSR-4 (5 minutes)

PSR-4 est le localisateur automatique de fichiers 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 pleinement qualifié (FQCN) : VendorPackageClass. 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 mappages d'espace de noms vers le répertoire.

Exemple du monde réel (10 minutes)

Structure du projet :

<code>vendor/
└── jonesrussell/
    └── blog/
        ├── composer.json
        └── src/
            └── Post/
                ├── PostController.php
                └── PostRepository.php</code>
Copier après la connexion

Configuration de Composer (3 minutes)

composer.json :

<code class="language-json">{
    "name": "jonesrussell/blog",
    "autoload": {
        "psr-4": {
            "JonesRussell\Blog\": "src/"
        }
    }
}</code>
Copier après la connexion

Création de cours (2 minutes)

PostController.php :

<code class="language-php"><?php

namespace JonesRussell\Blog\Post;

class PostController
{
    public function index()
    {
        return ['status' => 'Ready to blog!'];
    }
}</code>
Copier après la connexion

Modèles courants (5 minutes)

Racines d'espace de noms multiples :

<code class="language-json">{
    "autoload": {
        "psr-4": {
            "JonesRussell\Blog\": "src/",
            "JonesRussell\Blog\Tests\": "tests/"
        }
    }
}</code>
Copier après la connexion

Espaces de noms imbriqués : (Emplacement du fichier : src/Core/Database/Connection.php)

<code class="language-php"><?php

namespace JonesRussell\Blog\Core\Database;

class Connection
{
    private $config;

    public function __construct(array $config)
    {
        $this->config = $config;
    }
}</code>
Copier après la connexion

Exemples de cadre (5 minutes)

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

Exemple Laravel :

<code class="language-php"><?php

namespace App\Http\Controllers;

class BlogController extends Controller
{
    public function index()
    {
        return view('blog.index');
    }
}</code>
Copier après la connexion

Exemple Symfony :

<code class="language-php"><?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class BlogController extends AbstractController
{
    public function index(): Response
    {
        return $this->render('blog/index.html.twig');
    }
}</code>
Copier après la connexion

Dépannage (3 minutes)

  • Erreurs « Classe introuvable » : Exécutez composer dump-autoload.
  • Problèmes de structure de répertoire : Assurez-vous que votre structure de répertoire correspond à vos espaces de noms (sensible à la casse !).

Test (2 minutes)

Créer test-autoload.php :

<code class="language-php"><?php

require 'vendor/autoload.php';

$controller = new \JonesRussell\Blog\Post\PostController();
var_dump($controller->index()); // Should output "Ready to blog!"</code>
Copier après la connexion

Prochaines étapes

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

Ressources

  • Spécification officielle PSR-4
  • Documentation de chargement automatique de Composer
  • Référentiel d'exemples de séries (v0.3.0 - Implémentation PSR-4)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal