很多開發者寫物件導向的應用程式時對每個類的定義建立乙個 php 原始檔。乙個很大的煩惱是不得不在每個指令碼(每個類乙個檔案)開頭寫乙個長長的包含檔案列表。
在 php 5 中,不再需要這樣了。可以定義乙個 __autoload 函式,它會在試圖使用尚未被定義的類時自動呼叫。通過呼叫此函式,指令碼引擎在 php 出錯失敗前有了最後乙個機會載入所需的類。
使用良好定義的自動載入,你無需擔心乙個類檔案相對於當前類檔案的什麼位置;你只要簡單的使用這個類,自動載入器將會執行檔案查詢任務。
另外,自動載入,因為它直到最後一刻才載入並確信匹配只出現一次,是一次巨大的效能提公升——特別是在你部署之前如果花時間清除require_once()呼叫的時候
zend framework鼓勵使用自動載入,並提供許多任務具提供庫**和應用程式**的自動載入
php自動載方法有兩種.
第一種方案用__autoload,這個函式較簡單,也較弱.
但有一問題沒有解決, 就是在include前判斷檔案是否存在的問題.
set_include_path('aa' . path_separator . get_include_path());
function __autoload($classname)
else
}$a = new acls();
第二種方案用spl自動載入,這裡具體說一下這個.
spl_autoload_register()
乙個簡單的例子
set_include_path('aa' . path_separator . get_include_path());
//function __autoload($classname)
// else
//}spl_autoload_register();
$a = new acls();
spl_autoload_register()會自動先呼叫spl_autoload()在路徑中查詢具有小寫檔名的".php"程式.預設查詢的副檔名還有".ini",還可以用spl_autoload_extenstions()註冊副檔名.
在找不到的清況下,還可以通過自己定義函式查詢
如function loader1($class)
//自己寫一些載入的**
function loader2($class)
//當loader1()找不到時,我來找
spl_autoload_register('loader1');
spl_autoload_register('loader2');
還可以更多........
mvc框架是如何實現自動載入的
首先設定路徑
'include' => array(
),set_include_path(get_include_path() . path_separator .implode(path_separator, $config['include']));
在獲取url,解析出控制器與方法.
然後設定自動載入
class loader
}/**
* sql自動載入
*/spl_autoload_register(array('loader', 'autoload'));
路由,例項化控制器,呼叫方法,你寫的東西就開始執行了
/**
* 路由
*/public function route()
else
throw new exception('no action');
} else
throw new exception('no controller');
}
php 載入 php自動載入方式
本篇文章介紹的內容是關於php自動載入方式,現在分享給大家,有需要的朋友可以參考一下這篇文章的內容 php載入檔案方式 1 include,include once,requice,requice one常規載入 2 autoload 3 spl autoload register 常規載入方式 假...
php自動載入
php自動載方法有兩種.第一種方案用 autoload,這個函式較簡單,也較弱.但有一問題沒有解決,就是在include前判斷檔案是否存在的問題.1 2 3 4 5 6 7 8 9 10 11 12 13 set include path aa path separator get include ...
PHP 自動載入
自動載入物件 很多開發者寫物件導向的應用程式時對每個類的定義建立乙個 php 原始檔。乙個很大的煩惱是不得不在每個指令碼 每個類乙個檔案 開頭寫乙個常常的包含檔案列表。在 php 5 中,不再需要這樣了。可以定義乙個 autoload 函式,它會在試圖使用尚未被定義的類時自動呼叫。通過呼叫此函式,指...