,但到現在我不明白爲什麼我們要使用它
當你的結構和組織你的工作,因爲該組織的它會導致你有許多相似的類文件。更簡單的例子是一個mvc,但不僅如此,任何自定義結構都會導致類似文件包含一個類,然後由於相似性,您將它們放在同一個文件夾中,並且還使用通用文件命名約定,例如,您可以擁有一個控制器和模型目錄。檢查示例文件:employeeModel.php
,statisticsModel.php
,indexController.php
,errorController.php
那麼你可以利用這個事實,看看這個定製的自動加載功能:
/*** function to include model and view classes ***/
function __autoload($class_name)
{if(__DEBUG) eval(__DEBUG_EVAL);
/*** Load a model class ***/
$mfile=__SITE_PATH .'model/'.$class_name.'.php';//echo 'model file'.NL;v($file);
if (file_exists($mfile)){
include ($mfile);
if(__DEBUG) //store debug info before include
eval('error_log("autoload Success file exists: ".$mfile.NL);');
return true;
}
/*** Load a view class ***/
$cfile=__SITE_PATH .'view/'.'/'.substr($class_name,0,-4).'/'.$class_name.'.php';//v($file);
if (file_exists($cfile)){
include ($cfile);
if(__DEBUG) //store debug info before include
eval('error_log("autoload Success file exists: ".$cfile.NL);');
return true;
}
return false;
}
它也有幾行用於稍後可以輕鬆移除的調試。由於事物的相似性,它可以自己決定包括以及發生時報告錯誤。 沒有這個自動載入函數你必須注意,在使用之前,類文件是可用的。另外這個函數將允許包含一個文件,如果仔細檢查它沒有使用include_once
,這意味着autoload只會在文件之前沒有被看到時觸發,這與簡單文件包含每次觸發代碼被執行爲非常正確地通知它。
結論自動加載=每個文件觸發一次,自動執行,因此您直接執行一個類而不必關心它。
這段代碼沒有上下文是完全沒有意義的。 「PHP不使用這個方法」 - > *什麼方法*?坦率地說,作者聽起來並不令人信服。 – Jon 2012-03-22 07:45:06
@PalAla鏈接被破壞! – Songo 2012-03-22 07:48:04
對不起,我修改了它,現在可以使用。 – palAlaa 2012-03-22 07:50:27