spl_autoload_register と autoload_PHP チュートリアルの違いの詳細な説明

WBOY
リリース: 2016-07-21 15:09:30
オリジナル
806 人が閲覧しました

spl_autoload_register
(PHP 5 >= 5.1.2)
spl_autoload_register — __autoload() 関数を登録します
説明
bool spl_autoload_register ([ callback $autoload_function ] )
関数を SPL __autoload 関数スタックに登録します。このスタック内の関数がまだアクティブになっていない場合は、アクティブにします。
__autoload 関数がプログラムに実装されている場合は、__autoload スタックに明示的に登録する必要があります。
spl_autoload_register() 関数は、Zend Engine の __autoload 関数を spl_autoload() または
spl_autoload_call() に置き換えるためです。
Parameters
autoload_function
登録されるオートロード関数。パラメーターが指定されていない場合、autoload
spl_autoload() のデフォルト実装関数が自動的に登録されます。
戻り値
成功した場合は TRUE を返し、失敗した場合は FALSE を返します。
注: SPL は Standard PHP Library の略称です。これは、PHP5 で導入された拡張ライブラリであり、その主な機能には、オートロード メカニズムとさまざまな Iterator インターフェイスまたはクラスの実装が含まれます。 SPL オートロード メカニズムは、関数ポインタ autoload_func をオートロード機能を備えた自己実装関数にポイントすることによって実装されます。 SPL には 2 つの異なる関数 spl_autoload と spl_autoload_call があり、これら 2 つの異なる関数アドレスを autoload_func に指定することで、異なる自動ロード メカニズムが実装されます。

A という名前のクラスを定義するクラス ファイル A.php があるとします。

コードをコピーします コードは次のとおりです:

class A
{
public function __construct()
{
echo '了解しました。';
}
}

次に、このクラス A を使用する必要がある Index.php を用意します。従来の記述方法は
コードをコピーします コードは次のとおりです:

require('A.php');
$a = new A();

しかし、index.php に以下を含める必要がある場合、問題があります。クラスAに限らず、クラスがたくさん必要なので、require文をたくさん書かなければならず、不快に感じることがあります。
しかし、php5 以降のバージョンでは、これを行う必要はなくなりました。 php5 では、定義されていないクラスを使用しようとすると autoload 関数が自動的に呼び出されるため、インクルード ファイルの長いリストを作成しなくても、php がクラスを自動的にロードできるように __autoload 関数を作成できます。
たとえば、上記の例では、index.php は次のように記述できます:
コードをコピーします コードは次のとおりです:

function __autoload($class)
{
$file = $class . '.php';
if (is_file($file)) {
require_once($file);
}
}
$a = new A();

もちろん上記は最も単純なデモンストレーションです。__autoload は include_path を実行してクラス ファイルを見つけてロードするだけです。必要に応じてクラスをロードするための __autoload ルールを定義できます。
さらに、自動ロード中に __autoload を呼び出したくないが、独自の関数 (またはクラス メソッド) を呼び出したい場合は、 spl_autoload_register を使用して独自の自動ロード関数を登録できます。その関数のプロトタイプは次のとおりです:
bool spl_autoload_register ( [callback $autoload_function] )
上記の例を書き直してみましょう:
コードをコピーします コードは次のとおりです:

関数ローダー($クラス)
{
$file = $class . '.php';
if (is_file($file)) {
require_once($file);
}
}
spl_autoload_register('loader') ;
$a = new A();

このとき、PHP がクラスを探すとき、__autoload を呼び出すのではなく、独自に定義した関数ローダーを呼び出します。同じ理由で、以下のような書き方も可能です:
コードをコピー コードは以下の通りです:

class Loader
{
public static functionloadClass($class)
{
$file = $class .php';
if (is_file($file)) {
require_once($file)
}
}
}
spl_autoload_register(array('Loader', 'loadClass')) ;
$a = 新しい A();

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327279.html技術記事 spl_autoload_register (PHP 5 = 5.1.2) spl_autoload_register — __autoload() 関数の説明 bool spl_autoload_register ([ callback $autoload_function ] ) 関数を SPL に登録します...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!