Rumah >pembangunan bahagian belakang >tutorial php >PSR-Autoloading Standard dalam 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.
PSR-4 ialah pengesan fail automatik kod anda. Seperti GPS yang menggunakan alamat, PSR-4 menggunakan ruang nama untuk mencari kelas.
VendorPackageClass
. Anggap ia sebagai alamat lengkap kelas anda.Struktur projek:
<code>vendor/ └── jonesrussell/ └── blog/ ├── composer.json └── src/ └── Post/ ├── PostController.php └── PostRepository.php</code>
composer.json
:
<code class="language-json">{ "name": "jonesrussell/blog", "autoload": { "psr-4": { "JonesRussell\Blog\": "src/" } } }</code>
PostController.php
:
<code class="language-php"><?php namespace JonesRussell\Blog\Post; class PostController { public function index() { return ['status' => 'Ready to blog!']; } }</code>
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>
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>
composer dump-autoload
.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>
Seterusnya, kami akan membincangkan PSR-6 (caching). Ini adalah sebahagian daripada siri Piawaian PSR kami.
Atas ialah kandungan terperinci PSR-Autoloading Standard dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!