Rumah >pembangunan bahagian belakang >tutorial php >PSR-Autoloading Standard dalam PHP

PSR-Autoloading Standard dalam PHP

Barbara Streisand
Barbara Streisandasal
2025-01-11 16:04:44364semak imbas

PSR-Autoloading Standard in PHP

Ahnii!

Ingat manual PHP require hari? Minggu lepas, saya membantu pasukan menaik taraf apl warisan mereka – lebih 50 require penyata setiap fail! Mari lihat cara pemuatan auto PSR-4 menyelesaikan masalah ini.

Memahami PSR-4 (5 minit)

PSR-4 ialah pengesan fail automatik kod anda. Seperti GPS yang menggunakan alamat, PSR-4 menggunakan ruang nama untuk mencari kelas.

Konsep Utama (2 minit)

  1. Nama Kelas Berkelayakan Penuh (FQCN): VendorPackageClass. Anggap ia sebagai alamat lengkap kelas anda.
  2. Struktur Direktori: Direktori projek yang teratur dengan pemetaan ruang nama ke direktori.

Contoh Dunia Sebenar (10 minit)

Struktur projek:

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

Menyediakan Komposer (3 minit)

composer.json:

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

Mencipta Kelas (2 minit)

PostController.php:

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

namespace JonesRussell\Blog\Post;

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

Corak Biasa (5 minit)

Akar Ruang Nama Berbilang:

<code class="language-json">{
    "autoload": {
        "psr-4": {
            "JonesRussell\Blog\": "src/",
            "JonesRussell\Blog\Tests\": "tests/"
        }
    }
}</code>

Ruang Nama Bersarang: (Lokasi fail: 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>

Contoh Rangka Kerja (5 minit)

Laravel dan Symfony menggunakan PSR-4 secara lalai.

Contoh Laravel:

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

namespace App\Http\Controllers;

class BlogController extends Controller
{
    public function index()
    {
        return view('blog.index');
    }
}</code>

Contoh 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>

Menyelesaikan masalah (3 minit)

  • Ralat "Kelas Tidak Ditemui": Jalankan composer dump-autoload.
  • Isu Struktur Direktori: Pastikan struktur direktori anda sepadan dengan ruang nama anda (sensitif huruf besar-kecil!).

Ujian (2 minit)

Buat 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>

Langkah Seterusnya

Seterusnya, kami akan membincangkan PSR-6 (caching). Ini adalah sebahagian daripada siri Piawaian PSR kami.

Sumber

  • Spesifikasi Rasmi PSR-4
  • Dokumentasi Automuat Komposer
  • Repositori Contoh Siri (v0.3.0 - Pelaksanaan PSR-4)

Atas ialah kandungan terperinci PSR-Autoloading Standard dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn