參考:加上一點點自己的理解和疑惑
class_1.php
<?php
class class_1
public function test()
}?>
class_2.php
<?php
class class_2 extends class_1 }
?>
如果要在main.php檔案中使用的class_1類的話,要先requireclass_1檔案和class_2檔案,不然會報錯
但是用__autoload方法的話,只需要
main.php
<?php
function __autoload($name)else
} //$obj_1=new class_1();
$obj_2=new class_2();
$obj_2->test();
?>
__autoload函式回在例項化物件之前執行,而且這裡沒有例項化class_2的時候並沒有先例項化class_1,說明還沒有匯入class_1.php檔案,但是
不會報錯,說明在匯入物件的時候回去判斷匯入當前物件繼承的物件的相應php檔案,不過要注意的是,這裡的class_1和class_2是在同一級目錄下的,如果不是同一級目錄的話,還是會報錯
另外乙個需要注意的是,類名和類的檔名必須一致,才能更方便的使用魔術函式__autoload;
2014/11/4
在定義了命名空間的檔案定義autoload函式
<?php
namespace zj;
use zj_2;
class class_1
}function __autoload ( $class_name )
spl_autoload_register('zj\__autoload');
$temp=new zj_2\class_2();
輸出:this is autoloadclass_2
另外一提,class_exists函式也會觸發autoload函式
<?php
namespace zj;
use zj_2;
class class_1
}function __autoload ( $class_name )
spl_autoload_register('zj\__autoload');
//$temp=new zj_2\class_2();
var_dump(class_exists('zj_2\class_2'));
?>
輸出:
this is autoload
booleantrue
php魔術方法 autoload
autoload 方法是乙個特殊函式,它不是乙個類方法,而是單獨的函式,在類外被宣告,將在例項化乙個還沒被宣告的類中呼叫。舉個栗子 require once test a.php require once test b.php require once test c.php if 條件a else ...
php 魔術方法 autoload
php在魔術函式 autoload 方法出現以前,如果你要在乙個程式檔案中例項化100個物件,那麼你必須用include或者require包含進來100個類檔案,或者你把這100個類定義在同乙個類檔案中 相信這個檔案一定會非常大。但是 autoload 方法出來了,以後就不必為此大傷腦筋了,這個類會...
php魔術常量,魔術方法
魔術常量 1。line 返回檔案中的當前行號。2。file 返回檔案的完整路徑和檔名。如果用在包含檔案中,則返回包含檔名。自php4.0.2 起,file 總是包含乙個絕對路徑,而在此之前的版本有時會包含乙個相對路徑。3。function 返回函式名稱 php4.3.0 新加 自php5 起本常量返...