首先我詳細說下這四個引入函數
include() 與require() 的功能相同
唯一不同:require()不管是否被執行,只要存在,php在執行前都會預引入,include()則是執行到該語句時才進行引入
include_once() 與 require_once() 都是檢測文件是否被引入,被引入則不會引入
唯一不同: require_once()為無條件包含,顧名思義也就是引入后如遇到錯誤則停止,include_once()則忽略然后繼續執行
關於效率問題,我要說明,請自覺少用include_once()、 require_once()
該函數原理:引入文件->對當前腳本語句進行比較是否包含過->決定是否引入,效率可想而知,你想你要是整個項目上百個類庫,一次執行中比較數十次是怎樣的一個恐怖的后果
看到有些大牛的博客上寫到,不用在意這些小細節,多注重sql上優化,我的見解是,一個想不斷鑽研的程序員來說,應該保持一個良好的效率優化習慣,注重每一個細節
在這里寫一下個人的多類庫中防止重復引入文件的解決方式:
1.在調用腳本使用require();
2.類庫中防止重復使用 class_exists('類名') or include('類庫絕對路徑');
解釋:調用腳本的文件使用一次require(),因為調用腳本為程序通用入口,此處引入公共類庫很少會造成公共類庫沒有被使用,在類庫中使用以上語句,能防止當前腳本重復引入公共類庫,並且只要通過判斷條件才會執行引入,不會重復預引入,提高程序執行效率