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_...
に関する情報を参照してください。