ホームページ >バックエンド開発 >PHPチュートリアル >spl_autoload_register() と __autoload() の違い、spl_autoloadregister_PHP チュートリアル

spl_autoload_register() と __autoload() の違い、spl_autoloadregister_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:59:10790ブラウズ

spl_autoload_register() と __autoload()、splautoloadregister の違い

この記事では主に spl_autoload_register() と __autoload() の違いを紹介しますので、必要な方は参考にしてください。 ​

spl_autoload_register() と __autoload() については、ほとんどの人が前者を選択すると思います。 両方の使用法を見てください:

コードをコピーします コードは次のとおりです。
//__autoload の使用法
function __autoload($classname)
{
$filename = "./class/".$classname.".class.php";
if (is_file($filename))
{
include $filename }
if(is_file($ filename))



spl_autoload_register() を使用する利点は、言葉では言い表せません:
(1) オブジェクトを自動的にロードする方が便利で、多くのフレームワークがこれを実行します:



コードをコピーします
コードは次のとおりです。 LClass ClassAutoloader {
Public Function __ConStruct () {
spl_autoload_register (Array ($ this, 'loader')); {
echo 'ロードしようとしています', $ className, 'via' , __METHOD__, "()n" ;

include $className ;

}

}

$autoloader = new ClassAutoloader();

$obj = new Class1();$obj = new Class2( );

(2) __autoload() 関数は 1 回しか存在できないことを知っておく必要があります。 もちろん、spl_autoload_register() は複数の関数を登録できます。


コードをコピーします
コードは次のとおりです。
function a () {
include 'a.php';
}
function b () {
include 'b.php';
}
spl_autoload_register('a')
spl_autoload_register('b');

(3) SPL 関数は豊富で、登録済み関数の登録を解除する spl_autoload_unregister() や、登録されているすべての関数を返す spl_autoload_functions() など、より多くの関数を提供します。


詳細については、PHP リファレンス マニュアルを参照してください: SPL 関数リストについて

注:

__autoload 関数がプログラムに実装されている場合は、明示的に __autoload スタックに登録する必要があります。
spl_autoload_register() 関数は Zend Engine の __autoload 関数を spl_autoload() または spl_autoload_call() に置き換えるためです

コードをコピーします
コードは次のとおりです。
/***__autoload メソッドは、spl_autoload_register の後は無効になります。これは、autoload_func 関数ポインターが既に spl_autoload メソッドを指しているためです。
* 次のメソッドを通じて、_autoload メソッドを autoload_functions リストに追加できます

*/
spl_autoload_register( '__autoload' );





http://www.bkjia.com/PHPjc/1099423.html

www.bkjia.com

本当
http://www.bkjia.com/PHPjc/1099423.html

技術記事

spl_autoload_register() と __autoload()、spl_autoloadregister の違い この記事では主に spl_autoload_register() と __autoload() の違いを紹介します。必要な方は spl_...

に関する情報を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。