PHPでは、 SPL_AUTOLOAD_REGISTERを使用して、1つ以上のAutoLoAD関数を登録して、クラスまたはインターフェイスが使用されているが含まれていない場合にロードロジックを自動的に実行するために自動的に実行されます。一般的なシナリオは、名前空間を組み合わせてさまざまなディレクトリのクラスファイルを整理し、自動ローダーを介して頻繁に必要な場合や含めることを避けることです。
ただし、場合によっては、登録された負荷関数を削除する必要があります。その後、 SPL_AUTOLOAD_UNREGISTERを使用できます。
登録する:
<span><span><span class="hljs-title function_ invoke__">spl_autoload_register</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$autoload_function</span></span><span>);
</span></span>取り除く:
<span><span><span class="hljs-title function_ invoke__">spl_autoload_unregister</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$autoload_function</span></span><span>);
</span></span>ここの$ autoload_functionは登録時間と一致する必要があります。そうしないと、正しく削除することはできません。
名前空間で定義されているクラスメソッドが読み込み関数として使用される場合、 spl_autoload_registerおよびspl_autoload_unregisterに渡された値が完全な名前空間を含めることに注意してください。例えば:
<span><span><span class="hljs-title function_ invoke__">spl_autoload_register</span></span><span>(</span><span><span class="hljs-keyword">__NAMESPACE__</span></span><span> . </span><span><span class="hljs-string">'\Loader::autoloadA'</span></span><span>);
</span></span>Loader ::名前空間プレフィックスのないAutoloadaとして書かれている場合、 SPL_Autoload_unregisterが一致しないため、削除に失敗します。
複数の負荷戦略の切り替え<br> 一部のフレームワークまたはライブラリは、異なるディレクトリまたはロードルールと互換性があるように、複数のロード関数を連続して登録する場合があります。特定の段階に走った後、そのうちの1つを維持するだけで、 spl_autoload_unregisterを介して他の段階を削除できます。
一時的なローダー<br> デバッグまたは移行段階では、一時的なデバッグローダーを登録および削除して、正式なロジックに影響を与えることを避けるために、初期化が完了した後に削除できます。
spl_autoload_unregisterのパラメーターは、登録時のパラメーターとまったく同じでなければなりません。
名前空間環境で、 __namespace__などの完全な名前を記述します。 '\ class :: method' 。
無効なローダーを削除すると、繰り返されるトリガーや誤った負荷を避けることができます。
SPL_AUTOLOAD_REGISTERおよびSPL_AUTOLOAD_UNREGISTERを合理的に使用することにより、特に大規模なプロジェクトやマルチネームズスペース環境でPHPの自動負荷メカニズムを柔軟に管理できます。