PHPは使用自動的にロードされます

オートロードメカニズムを導入する前に、他のファイル関数やクラスを参照するためには、使用する必要がある/ロードするファイルを必要としています。オートロードメカニズムと名前空間SPLライブラリーの向上に伴い、近代的なPHPの開発者はめったに必要と/ロード・クラスを含める方法を参照してくださいません。

クラス定義を含むファイルが配置され、自然にクラス定義が存在します:/必要が使用する方法は、負荷クラスは簡単ですあります。少し大きめの規模プロジェクトでは、このアプローチは、各PHPファイルの先頭につながるの集まりです/必要があります。いくつかのファイルがいくつかのグローバル定数を定義した場合、それは時間から定義されたスローの時間に繰り返し警告につながることができます。あなたは、サードパーティのライブラリを使用する場合は、正しいインポート文書ように、データベースの構造を理解する必要があります。あなたが見ることができ、このアプローチは非効率的なクラスをロードすると面倒です。

 

PHP5は、作業負荷のクラスを簡単にするために__autoload機能を導入しました。あなたが存在しない関数を定義した場合、この関数は常に呼び出されます。開発者は、例えば、この機能によってクラスファイルを読み込む実装できます。

関数 __autoload($クラス名){     するrequire_once( "{ $クラス名 }の.php")} 

 

ただし、この機能は推奨されません、とPHP7.2で廃棄されます。PHPの関数が同じ名前を許可されていないので、それはとてもプロジェクトは__autoload関数をのみ登場することができ、捨てられました。一つだけの機能__autoload少し難しいもののしかし、サードパーティのライブラリも__autoloadを定義する場合、行うことができ、それが頭痛の種であることを確認するために、独自のコードを記述します。__autoloadの後継者は、これが自動的にロードされた武器を解決するためのPHPクラスで、spl_autoload_register機能です。

 

Spl_auoload_register関数のパラメータは、コールバック関数で、関数が呼び出され、ローディング機能は、自動ロード機能のキューに登録されますされています。あなたはクラス定義を見つけるか、未定義のクラスが例外をスローするまで、クラス定義、Zendのエンジンのためのコールバックキューを見つけることができません。spl_autoload_registerを使用して、注目すべきいくつかのポイントがあります。

 

  1. 理論的には、ロード機能を無制限に登録することができ、比較__autoloadは一度だけ定義することができます。

  2. PHPエンジンは、登録機能の順に呼び出されます。効率のために、ロード機能の最も一般的なタイプは、キューの先頭に置かれるべきです。

  3. 登録された機能spl_autoload_registerは、PHPは、開発者がクラス、または直接投げる例外を見つけるために最後のチャンスです。新しい、静的呼び出し、でclass_exists操作は、登録されたロード関数の呼び出しをトリガーする可能性があります。

  4. spl_autoload_register PSR-4仕様としばしば用いて、効率的かつエレガントな方法を実現します。

 

spl_autoload_registerを使用すると、プログラムはもはや/必要とし、使用に置き換え含めるの束を持っていません。一部には便利含める/必要の束を使用するよりも、見ての使用の杭を使用していることを考えることがあります。実際には、使用の利点は、以下の通りであります:

 

  1. 同じ空間でのクラス名は、導入して使用する必要はありません。

  2. PHP7基は、例えば、アプリケーションの\ utilsの{A、B、C}、行省と便利の数を使用し、方法のクラスに導入することができます。

  3. 使用が同じ名前によるエラーを回避するために、クラスのエイリアスを設定することができます。

  4. 相対パス、絶対パスを考慮する必要を使用を使用し、ロードするために処理機能を登録しています。

 

spl_autoload_registerでは、PHPのオブジェクト指向プログラミングは、より完全かつエレガントにすることが、また、PHPは、より近代的な方法で実行できるようにします。

 

spl_autoload_registerに加えて、一連の機能もspl_autoload_call / spl_autoload_extentions / spl_autoload_functions / spl_autoload_unregisterをspl_autoload。これらの機能は通常、めったにプログラム開発を使用していない、それはライブラリの開発に使用することができます。

おすすめ

転載: www.cnblogs.com/mo3408/p/10958360.html