ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルの spl_autoload_register() と __autoload() の違いの分析

PHP_PHP チュートリアルの spl_autoload_register() と __autoload() の違いの分析

WBOY
WBOYオリジナル
2016-07-13 10:30:01755ブラウズ

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

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

//__autoloadの使用法
function __autoload($classname)
{
$filename = "./class/".$classname.".class.php ";
if (is_file($filename))
{
} include $filename;
}
}

//spl_autoload_register の使用法
spl_autoload_register('load_class');

function load_class($classname)
{
$filename = "./class /".$classname.".class.php";
if (is_file($filename))
{
include $filename;
}
}

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

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

class ClassAutoloader {
public function __construct() {
spl_autoload_register(array($this, 'loader'));
}
private function loader($ className) {
echo 'ロードしようとしています '、$className、' via '、__METHOD__、"()n";
$className を含めます。 = 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');



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




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


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



コードをコピーします

コードは次のとおりです:


/**

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

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

www.bkjia.com

tru​​e
http://www.bkjia.com/PHPjc/768124.html技術記事

spl_autoload_register() と __autoload() については、ほとんどの人が前者を選択すると思います。 両方の使用法を見てください。 コードをコピーします。 コードは次のとおりです。 //__autoload の使用法 function __autoload($clas...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。