YiiのAutoloaderは、PSR-4に基づいて、明示的に必要に応じてクラスを自動的にロードすることを担当します。名前空間をディレクトリパスにマッピングすることで機能します。コードがクラスを参照すると、YiiのAutoloaderは、名前空間とクラス名に基づいて対応するファイルを見つけようとします。たとえば、コードが \ app \ models \ user
を使用している場合、autoloaderは app/models/user.php
にあるファイルを検索します。このマッピングは通常、アプリケーションの構成で定義されます。多くの場合、 code> autoload
。オートローディング)。 psr4
配列は、より一般的に使用される方法です。名前空間をディレクトリにマップします。アプリケーション構成にエントリを追加または変更することで、カスタマイズできます。たとえば、新しい名前空間マッピングを追加するには、アプリケーションの構成ファイル(例: config/main.php
)に次のものを追加できます:
<code class="php"> 'components' =&gt; ['autoload' =&gt; ['psr4' =&gt; ['app \\' =&gt; ['@app'、//アプリケーションのベースディレクトリへのエイリアス]、 'ベンダー\\ mylibrary \\' =&gt; ['@vendor/mylibrary'、//サードパーティライブラリへのパス]、]、]、]、]、</code>
この例は、 vendor \ mylibrary
namespaceのマッピングを追加します。これらのパスを調整して、プロジェクト構造を反映できます。 classmap
配列の変更も同様に動作します。クラス名をファイルパスに明示的にマップします。変更のためにオートローダー構成を変更した後、アプリケーションのランタイムキャッシュをクリアすることを忘れないでください。名前空間構造により、オートローダーの検索スペースが削減されます。可能であれば、深くネストされた名前空間を避けてください。グループ関連のクラス論理的には、自動車を通過する必要があるディレクトリの数を最小限に抑えるために。 classmap
は、PSR-4に固有のディレクトリトラバーサルをバイパスする直接マッピングを提供します。キャッシュシステムが適切に構成され、効率的に機能していることを確認してください。ゆっくりと不適切に構成されたキャッシュは、オートローダーのパフォーマンスの利点を無効にする可能性があります。
psr4
配列の名前空間マッピングは、クラスの実際のディレクトリの場所に名前空間を正しくマッピングします。タイプミスまたは誤ったパスは、自動装置エラーの一般的なソースです。 classmap
:の過剰使用が頻繁に使用されるクラスマップの過剰使用は、頻繁に使用されるクラスのパフォーマンスの利点を提供し、大規模な構成ファイルにつながり、オートローアドの利点を潜在的に無効にする可能性があります。慎重に使用してください。サードパーティライブラリをYIIの自動装備メカニズムに統合するには、通常、アプリケーションの構成に名前空間マッピングを追加することが含まれます。サードパーティライブラリがベンダー
ディレクトリ(作曲家管理パッケージの標準場所)にあると仮定します。ライブラリがPSR-4オートロードを使用している場合(ほとんどの最新のライブラリがそうであるように)、 config/main.php
ファイルの psr4
arrayに名前空間のマッピングを追加する必要があります。例:
<code class="php"> 'コンポーネント' =&gt; ['autoload' =&gt; ['psr4' =&gt; [// ...既存のマッピング... 'myvendor \\ mylibrary \\' =&gt; ['@vendor/mylibrary']、//実際のベンダーとライブラリパスに置き換える]、]、]、]、</code>
これは、ライブラリの名前空間が myvendor \ mylibrary
であり、そのソースコードは@vendor/mylibrary
にあると仮定します。ライブラリが別の自動装置メカニズム(PSR-0またはカスタムオートローダーなど)を使用している場合、統合に関する特定の指示についてドキュメントを参照する必要があるかもしれません。場合によっては、YiiのAutoloaderが開始される前に、ライブラリのAutoloaderファイルを手動で含める必要がある場合があります。 myvendor
、 mylibrary
、@vendor/mylibrary
などのプレースホルダーを実際のライブラリの詳細に置き換えることを忘れないでください。ライブラリが作曲家を使用していない場合は、PHPにライブラリのパスを手動で追加する必要がある場合があります。
以上がYiiのAutoloaderはどのように機能し、どのようにカスタマイズできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。