Ahnii!
Erinnern Sie sich an die manuellen require
Tage von PHP? Letzte Woche habe ich einem Team geholfen, seine alte App zu aktualisieren – über 50 require
Kontoauszüge pro Datei! Mal sehen, wie das automatische Laden von PSR-4 dieses Problem löst.
PSR-4 ist der automatische Dateifinder Ihres Codes. Wie ein GPS, das Adressen verwendet, verwendet PSR-4 Namespaces, um Klassen zu finden.
VendorPackageClass
. Betrachten Sie es als die vollständige Adresse Ihrer Klasse.Projektstruktur:
<code>vendor/ └── jonesrussell/ └── blog/ ├── composer.json └── src/ └── Post/ ├── PostController.php └── PostRepository.php</code>
composer.json
:
{ "name": "jonesrussell/blog", "autoload": { "psr-4": { "JonesRussell\Blog\": "src/" } } }
PostController.php
:
<?php namespace JonesRussell\Blog\Post; class PostController { public function index() { return ['status' => 'Ready to blog!']; } }
Mehrere Namespace-Wurzeln:
{ "autoload": { "psr-4": { "JonesRussell\Blog\": "src/", "JonesRussell\Blog\Tests\": "tests/" } } }
Verschachtelte Namespaces: (Dateispeicherort: src/Core/Database/Connection.php
)
<?php namespace JonesRussell\Blog\Core\Database; class Connection { private $config; public function __construct(array $config) { $this->config = $config; } }
Laravel und Symfony verwenden standardmäßig PSR-4.
Laravel-Beispiel:
<?php namespace App\Http\Controllers; class BlogController extends Controller { public function index() { return view('blog.index'); } }
Symfony-Beispiel:
<?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'); } }
composer dump-autoload
aus.Erstellen Sie test-autoload.php
:
<?php require 'vendor/autoload.php'; $controller = new \JonesRussell\Blog\Post\PostController(); var_dump($controller->index()); // Should output "Ready to blog!"
Als nächstes behandeln wir PSR-6 (Caching). Dies ist Teil unserer PSR-Standards-Reihe.
Das obige ist der detaillierte Inhalt vonPSR-Autoloading-Standard in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!