首頁 > 後端開發 > php教程 > PSR-PHP 中的自動加載標準

PSR-PHP 中的自動加載標準

Barbara Streisand
發布: 2025-01-11 16:04:44
原創
359 人瀏覽過

PSR-Autoloading Standard in PHP

阿尼!

還記得 PHP 手冊require天嗎? 上週,我幫助一個團隊升級了他們的舊版應用程式 - 每個檔案超過 50 個 require 語句! 讓我們看看 PSR-4 自動載入如何解決這個問題。

了解 PSR-4(5 分鐘)

PSR-4 是程式碼的自動檔案定位器。 就像使用位址的 GPS 一樣,PSR-4 使用名稱空間來尋找類別。

關鍵概念(2 分鐘)

  1. 完全限定類別名稱 (FQCN): VendorPackageClass。 將其視為您班級的完整地址。
  2. 目錄結構:組織良好的專案目錄,具有命名空間到目錄的對應。

真實範例(10 分鐘)

專案結構:

<code>vendor/
└── jonesrussell/
    └── blog/
        ├── composer.json
        └── src/
            └── Post/
                ├── PostController.php
                └── PostRepository.php</code>
登入後複製

設定 Composer(3 分鐘)

composer.json:

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

建立類別(2 分鐘)

PostController.php:

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

namespace JonesRussell\Blog\Post;

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

常見模式(5 分鐘)

多重命名空間根:

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

巢狀命名空間:(檔案位置: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>
登入後複製

框架範例(5 分鐘)

Laravel 和 Symfony 預設使用 PSR-4。

Laravel 例:

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

namespace App\Http\Controllers;

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

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>
登入後複製

故障排除(3 分鐘)

  • 「找不到類別」錯誤:運行composer dump-autoload
  • 目錄結構問題:確保您的目錄結構與您的命名空間相符(區分大小寫!)。

測試(2 分鐘)

建立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>
登入後複製

後續步驟

接下來,我們將介紹 PSR-6(快取)。這是我們 PSR 標準系列的一部分。

資源

  • PSR-4 官方規範
  • Composer 自動載入文件
  • 系列範例儲存庫(v0.3.0 - PSR-4 實作)

以上是PSR-PHP 中的自動加載標準的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板