[英]Should require_once “some file.php” ; appear anywhere but the top of the file?
以下示例是否適用於PHP的require_once構造?
function foo( $param )
{
require_once "my_file.php" ;
//
// do something here
}
或者在文件開頭只有require_once構造更合適嗎?
即使包含的文件僅在函數的上下文中有用,為了便於閱讀和維護,是否最好包含在頂部?
它歸結為編碼風格和意見的問題。 我個人將所有的require_once
語句保存在我的文件的最頂層,這樣我就可以很容易地看到哪些文件包含在哪里,沒有什么比這更糟糕的了,包括弄亂你的腳本。 但是,如果您有幾個大型必需腳本只需要某些功能,那么將require_once
放在一個函數中就可以從性能角度來看,只需確保在頁面頂部放置一個注釋即可。
<?php
//require_once "my_file.php" (see function foo)
function foo($param) {
require_once "my_file.php";
}
這是一場宗教辯論。
require
和include
語句的PROS: 依賴關系在一致可靠的地方清楚地記錄下來。
提高可讀性/可維護性
OP代碼緩存更簡單(盡管你可以說這不會直接影響開發人員)
require
和include
語句: 如果您正在進行某種動態運行時(包括使用__autoload()),則無法在文件頂部執行硬編碼語句。
如果代碼中只有一個執行路徑使用include,每次都包含它,則無條件地浪費資源。
include
或require
語句的長列表只是開發人員在編輯文件時必須滾動的噪音。 當然,一長串的依賴關系可以看作是一個標志,代碼應該分解成更小的更集中的部分,所以也許你可以將這個作為PRO旋轉,因為它使代碼味道脫穎而出。
如果您不想加載文件,除非需要,請查看自動加載 - 通過spl_autoload_register()
在較新的PHP上。
也許你在某些情況下只需要包含文件,如果你根本不需要它,你可以避免包含它,如果它是一個大文件。 所以,我猜你只能在if - else
語句的一個分支中找到require_once
。
使用require_once時請記住,這不是一些預處理器指令。 當PHP運行代碼時執行require_once語句,並且只有在執行期間尚未包含特定腳本時才執行它。
例如:
conf.php:
<?php
$maxAge = 40;
?>
myscript.php
<?php
function foo($age) {
require_once("conf.php");
if($age > $maxAge)
return "1";
else
return "0";
}
echo foo(30); // Echos 1
echo foo(30); // Echos 0
?>
在第二次調用foo(..)時不執行require_once,因為conf.php已經被包含一次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.