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() に置き換えるためです
コードをコピーします
コードは次のとおりです:
/**
*__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
true
http://www.bkjia.com/PHPjc/768124.html技術記事
spl_autoload_register() と __autoload() については、ほとんどの人が前者を選択すると思います。 両方の使用法を見てください。 コードをコピーします。 コードは次のとおりです。 //__autoload の使用法 function __autoload($clas...