我想這樣
if(a.php沒有被包含){
include("a.php");
}
回複討論(解決方案)
比如,有下面一段代碼:要分別從config裡得到變數值,include寫在函數裡,第一個函數被調用後,可以正常傳回值,但第二個函數,再用include_once就沒用了,會報未定義變數 getfile_patn的錯誤。我不想把include寫在最外面,在每個函數裡要用變數時用globe來聲明,我的想法是,在每個要取出config檔案裡的變數的函數裡,取出想要的變數,函數完結時,就釋放資源config檔案,這樣方便管理代碼,每次想用時,直接include就行了。
$pat=aa();
echo $pat,PHP_EOL;
$post=bb();
echo '11',$post,PHP_EOL;
function aa()
{
include_once(dirname(__FILE__).'/config.php');
$patten = $getfile_patn["search"]['patten'];//$getfile_patn是config.php裡的變數
return $patten ;
}
function bb()
{
include_once(dirname(__FILE__).'/config.php');
postfix = $getfile_patn["search"]['postfix'];
turn $postfix ;
}
每個被包含的檔案裡定義個常量,然後判斷是否定義常量,據此來判斷是否已包含檔案。
寫個包含類,包含了就存在類屬性中,所有操作就可以通過這個類去搞定
include_once("a.php");
已包含就不包含
有人說這個函數效率低,因為他需要檢查是否已經包含過了
但是,用 php 寫的檢查程式能比 c 程式的速度快嗎
include_once("a.php");
已包含就不包含
有人說這個函數效率低,因為他需要檢查是否已經包含過了
但是,用 php 寫的檢查程式能比 c 程式的速度快嗎
就是因為function aa()中用了include_once,導致function bb中再也不能包含檔案,進而不能使用檔案中的變數了,這就是要解決的問題
函數裡就該
include(dirname(__FILE__).'/config.php');
但 config.php 不能有函數或類定義
如果有則需要用條件陳述式排除重複定義
像你這樣載入一個檔案,只從裡面取出一個定值,是極差的做法
這種環境變數,要麼就聲明為全域變數,要麼就用單例模式的執行個體
總是負載檔案效率太低了
function aa(){ include_once(dirname(__FILE__).'/config.php'); $patten = $getfile_patn["search"]['patten'];//$getfile_patn是config.php裡的變數 return $patten ;}
這種函數倒也不多見....如老徐所說,如果你要取變數,並且需要重複使用的,請使用全域變數, 或者memcache 來處理,才是正確的解決方案.
現在都在用require_once了吧,
get_included_files() ? 返回被 include 和 require 檔案名稱的 array
http://www.php.net/manual/zh/function.get-included-files.php