php自動載入

2021-06-01 13:22:19 字數 1916 閱讀 7139

很多開發者寫物件導向的應用程式時對每個類的定義建立乙個 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 函式,它會在試圖使用尚未被定義的類時自動呼叫。通過呼叫此函式,指...