怎樣判斷一個檔案是否已經被包含了

來源:互聯網
上載者:User
我想這樣
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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.