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
436 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 :

{
    "name": "jonesrussell/blog",
    "autoload": {
        "psr-4": {
            "JonesRussell\Blog\": "src/"
        }
    }
}
Copier après la connexion

Création de cours (2 minutes)

PostController.php :

<?php

namespace JonesRussell\Blog\Post;

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

Modèles courants (5 minutes)

Racines d'espace de noms multiples :

{
    "autoload": {
        "psr-4": {
            "JonesRussell\Blog\": "src/",
            "JonesRussell\Blog\Tests\": "tests/"
        }
    }
}
Copier après la connexion

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

<?php

namespace JonesRussell\Blog\Core\Database;

class Connection
{
    private $config;

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

Exemples de cadre (5 minutes)

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

Exemple Laravel :

<?php

namespace App\Http\Controllers;

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

Exemple Symfony :

<?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');
    }
}
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 :

<?php

require 'vendor/autoload.php';

$controller = new \JonesRussell\Blog\Post\PostController();
var_dump($controller->index()); // Should output "Ready to blog!"
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!

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