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

PSR-Autoloading Standard dalam PHP

Barbara Streisand
Lepaskan: 2025-01-11 16:04:44
asal
447 orang telah melayarinya

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>
Salin selepas log masuk

Menyediakan Komposer (3 minit)

composer.json:

{
    "name": "jonesrussell/blog",
    "autoload": {
        "psr-4": {
            "JonesRussell\Blog\": "src/"
        }
    }
}
Salin selepas log masuk

Mencipta Kelas (2 minit)

PostController.php:

<?php

namespace JonesRussell\Blog\Post;

class PostController
{
    public function index()
    {
        return ['status' => 'Ready to blog!'];
    }
}
Salin selepas log masuk

Corak Biasa (5 minit)

Akar Ruang Nama Berbilang:

{
    "autoload": {
        "psr-4": {
            "JonesRussell\Blog\": "src/",
            "JonesRussell\Blog\Tests\": "tests/"
        }
    }
}
Salin selepas log masuk

Ruang Nama Bersarang: (Lokasi fail: src/Core/Database/Connection.php)

<?php

namespace JonesRussell\Blog\Core\Database;

class Connection
{
    private $config;

    public function __construct(array $config)
    {
        $this->config = $config;
    }
}
Salin selepas log masuk

Contoh Rangka Kerja (5 minit)

Laravel dan Symfony menggunakan PSR-4 secara lalai.

Contoh Laravel:

<?php

namespace App\Http\Controllers;

class BlogController extends Controller
{
    public function index()
    {
        return view('blog.index');
    }
}
Salin selepas log masuk

Contoh 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');
    }
}
Salin selepas log masuk

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:

<?php

require 'vendor/autoload.php';

$controller = new \JonesRussell\Blog\Post\PostController();
var_dump($controller->index()); // Should output "Ready to blog!"
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan