「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHPのPSR自動荷重基準の詳細な説明

PHPのPSR自動荷重基準の詳細な説明

2025-04-29に投稿されました
ブラウズ:201

PSR-Autoloading Standard in PHP

ahnii!

phpのマニュアル日を覚えていますか? 先週、私はチームがレガシーアプリをアップグレードするのを手伝いました。50を超えるはファイルごとにステートメントを必要とします! PSR-4 Autoloadingがこれをどのように解決するかを見てみましょう。

PSR-4(5分)を理解する

PSR-4は、コードの自動ファイルロケーターです。 アドレスを使用したGPSのように、PSR-4は名前空間を使用してクラスを見つけます。

キーコンセプト(2分)

  1. 完全資格のクラス名(fqcn): 。 クラスの完全なアドレスと考えてください。
  2. ディレクトリ構造: Namespace-to-Directoryマッピングを備えたよく組織化されたプロジェクトディレクトリ。
実世界の例(10分)

プロジェクト構造:

vendor/
└── jonesrussell/
    └── blog/
        ├── composer.json
        └── src/
            └── Post/
                ├── PostController.php
                └── PostRepository.php
Composerのセットアップ(3分)

composer.json

{
    "name": "jonesrussell/blog",
    "autoload": {
        "psr-4": {
            "JonesRussell\\Blog\\": "src/"
        }
    }
}
クラスの作成(2分)

postcontroller.php

 'Ready to blog!'];
    }
}
共通パターン(5分)

複数の名前空間ルーツ:

{
    "autoload": {
        "psr-4": {
            "JonesRussell\\Blog\\": "src/",
            "JonesRussell\\Blog\\Tests\\": "tests/"
        }
    }
}
ネストされた名前空間:(ファイル場所:

src/core/database/connection.php

config = $config;
    }
}
フレームワークの例(5分)

laravelとsymfonyはデフォルトでpsr-4を使用します。

laravelの例:

Symfonyの例:

render('blog/index.html.twig');
    }
}
トラブルシューティング(3分)

  • "クラスは見つかりません"エラー: run composer dump-autoload
  • ディレクトリ構造の問題:ディレクトリ構造が名前空間(ケースセンシティブ!)に一致することを確認します。
テスト(2分)

create

test-autoload.php

index()); // Should output "Ready to blog!"
次のステップ

次に、PSR-6(キャッシュ)をカバーします。これは、PSR標準シリーズの一部です。

リソース

    公式PSR-4仕様
  • Composer Autoloading Documentation
  • シリーズの例リポジトリ(v0.3.0-PSR -4実装)
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3