PHP類的自動加載以及自定義自動加載函數

類的自動加載函數是個魔術方法,這個函數不需要調用是自動會加載調用的,PHP體系內部提供的方法,__ aotuload(),使用形式爲:

<?php

function __autoload($className){
require_once "./".$className.".php";   // 含義爲 當需要一個類的時候 這個函數就會自動加載 出這個目錄下的這個類文件

?>

注意:

  自動這個加載函數只能加載某一個目錄路徑的類文件,如果需要加載其他目錄下面的類文件的時候就需要自定義加載函數了

spl_autoload_register(“函數名”) 先提前聲明定義,然後再寫對應的函數名中的,和自動加載函數形式類似:

//先聲明一個函數名,提前告知系統將有 個自動加載函數要自己書寫
spl_autoload_register("autoload1");
spl_autoload_register("autoload2");

function autoload1($className){
    $file="目錄".$className.".class.php";
    
    if(file_exits($file)){  // 在這裏做了個判斷,file_exits()是判斷文件或目錄是否存在,如果不存在則提示,存在則直接加載
     require $file;
        }else{
            echo "需要加載的類文件不存在!!!";
        }


      //加載某個目錄下面的類文件 (.class.php爲文件後綴)
}

function autoload2($className){
  $file2="目錄".$className.".class.php";
  if(file_exits($file)){  
     require $file2;
        }else{
            echo "需要加載的類文件不存在!!!";
        }
}

當用到這兩個目錄中的類文件的類的時候,這兩個函數就會自動調用,用不到類的時候則不運行,給內存空間也省了許多地方

也可以直接把這兩個函數直接封裝進一個自定義加載類方法中去,可以實現多個類的自動加載,方法如下:

$file1="./class/".$className."tool.php";
$file2="./file/".$className."tool.php";
$file3="./exe/config/".$className.".php";
// 定義的路經變量
spl_autoload_resgister("autoload");
//註冊一個函數名爲autoload的 自定義自動加載類的函數
function autoload($className){
    if(file_exits($file1)){ // 如果這個類名在這個文件裏面,則加載這個file1文件,下方兩個同理
//$className 這個類 的文件 在這個file1路經中能找到這個對應的文件 所以可以加載   
        require_once $file1;
    }else if(file_exits($file2)){
        require_once $file2;
    }else if(file_exits($file3)){
        require_once $file3;
    }


}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章