__autoload 1 の使用方法:
最も一般的に使用される方法は、クラス名に基づいてクラス ファイルを検索し、次に require_one
コードをコピーすることです コードは次のとおりです。
function __autoload($class_name) {
$path = str_replace('_', '/', $class_name); require_once $path . '.php';
}
// Http/File/Interface.php ファイルがここに自動的にロードされます
$a = new Http_File_Interface(); 🎜>この方法の利点は、シンプルで使いやすいことです。もちろん、欠点もあります。欠点は、ファイル構造を変更するときにクラス名とファイル パスを強制的に変更する必要があることです。
コードは以下の通りです: $map = array( 'Http_File_Interface' => 'C:/PHP/HTTP/FILE/Interface.php'
); __autoload($class_name) { if (isset($map[$class_name])) {
require_once $map[$class_name]
}
}
// C:/PHP/HTTP/FILE/ここに自動的にロードされます Interface.php ファイル
$a = new Http_File_Interface();
このメソッドの利点は、クラス名とファイル パスがマッピングによってのみ維持されることです。 , そのため、ファイル構造が変更された場合、この時点ではクラス名を変更する必要はなく、マッピング内の対応する項目を変更するだけで済みます。
前の方法と比較したこの方法の欠点は、ファイルが多すぎる場合にマッピングを維持するのが非常に面倒なことです。おそらく、現時点では、メンテナンスのために json または別のファイルを使用することを検討するでしょう。おそらく、そのようなマッピングを維持または作成するためにフレームワークを使用することを考えるでしょう。
/*http.php*/ class http
{public function callname( ){
echo "これは http";
}
}
/*test.php*/
set_include_path("/home/yejianfeng/handcode/ "); //ここでパスを include に入れる必要があります
spl_autoload("http"); ///home/yejianfeng/handcode/http.php を探します
$a = new http();
$ a->callname();
Spl_autoload_register
関数を SPL __autoload 関数スタックに登録します。例を直接見てください:
/*http.php*/ class http
{ public function callname(){
echo "これは http";
}
}
/*test.php*/
php
spl_autoload_register(function ($class){
if($class == 'http'){
require_once("/home/yejianfeng/handcode/http.php");
}
});
$a = new http();
spl_autoload_call
spl_autoload_register に登録されている呼び出し関数を呼び出します。以下の例を参照してください。
/ *http.php*/ php class http {
public function callname(){echo "これは http";
}
/*http2.php*/
class http
{
public function callname(){
echo "これは http2";
}
/*test.php*/
spl_autoload_register(function($class){
if($class == 'http'){
require_once("/home/yejianfeng/handcode/http.php");
}
if($class == 'http2'){
require_once("/home/yejianfeng/handcode/http2.php ");
}
}) ;
spl_auto_call('http2');
$a = new http();
$a->callname(); //これで今度は、「this is http2」が出力されます
spl_auto_register 関数を使用すると、__autoload を使用せずに自動ロードにカスタム関数を使用できるようになります。この方法は現在では一般的に使用されています。
Zend の AutoLoader モジュールはこのメソッドを使用します。対応するコードを抜粋します
コードをコピーします コードは次のとおりです:
spl_autoload_register(array(__CLASS__, 'autoload') );
public static function autoload($class)
{
…..
}