[英]PHP include/require inside functions
擁有相當大的函數並且每次加載頁面時都會加載它們,最好編寫function foo(){ include(.../file_with_function's_code); return; }
function foo(){ include(.../file_with_function's_code); return; }
function foo(){ include(.../file_with_function's_code); return; }
最小化函數腳本的大小? 或者無關緊要,因為當一個函數被加載(但沒有執行)時,即使它被包含在內,也會加載內容? 謝謝。
(編輯:我的問題不是關於它是否可能)
雖然@Luceos答案在技術上是正確的(最好的正確),但它沒有回答你問的問題,即更好地做到這一點,還是包括無論函數調用發生的事情?
我用最基本的方式測試了這個(OP,為什么不是你?):
<?php
echo "Testing...";
function doThing() {
include nonExistantFile.php;
}
//doThing();
echo "Done testing.";
結果:
如果我打電話給doThing();
我收到一個未找到文件的警告。
如果我注釋掉doThing();
......沒有錯誤! 這樣你就可以節省文件加載時間。
或者,作為一個很好的替代方案,將您的函數封裝在類中,並從__autoload
獲益:
function __autoload($class_name) {
include $class_name . '.php';
}
將myBigFunction()
封裝在一個類中
class myBigFunction {
public static function run() {
//the old code goes here
}
}
將其保存為myBigFunction.php
當您在類上調用該函數作為靜態方法時:
myBigFunction::run()
__autoload
將加載文件,但不會在此之前加載。
是的,這是可能的; 見http://www.php.net/manual/en/function.include.php
如果include發生在調用文件中的函數內部,則調用文件中包含的所有代碼將表現為就好像已在該函數內定義的那樣。 因此,它將遵循該函數的可變范圍。
問題是,為什么不將周圍的函數定義添加到包含的文件中。 我認為在函數中包含的唯一可行理由是將該函數中的代碼分成位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.