在寫代碼的時候,經常會遇到一個頭疼的問題,就是要在一個頁面中引入很多的類,需要用到include_once或者require_once()函數一個一個引入。當引入的內容不多時,還可以接受,但是如果有十幾個或者幾十個檔案需要引入,操作次數多,煩躁不說,還會出現重複引入或者忘了引用的情況。
現在在PHP5中我們可以用__autoload()方法來解決這個問題,__autoload()方法可以自動執行個體化需要使用的類。當程式要用到一個類,但該類還沒有執行個體化時,PHP5將調用__autoload()方法,在指定的路徑下自動尋找和該類名稱相同的檔案。如果找到,程式則繼續執行;否則,報告錯誤。
注意:
其他所有的方法都是要在類的內部添加才起作用,__autoload()是唯一一個不在類中添加的方法
只要在頁面中使用到一個類,類名就會自動傳給這個參數。
舉個例子:
類檔案sport.class.php的代碼:
<?phpclass Sport{private $type;public function __construct($type){$this->type = $type;}public function __toString(){return $this->type;}}?>
在index.php檔案下的代碼:
<?phpfunction __autoload($class_name){ //建立__autoload方法$class_path = $class_name . '.class.php'; //類檔案路徑if(file_exists($class_path)){ //判斷檔案是否存在include_once($class_path); //動態引入檔案}elseecho '類路徑錯誤';}$sport = new Sport('打籃球');echo $sport;?>
先在類檔案sport.class.php中常見類,但是不要執行個體化。然後再php檔案index.php中講類檔案中的類引入進來。