2013-04-05 98 views
3

我很努力地理解範圍,什麼阻止我的新代碼的工作(假設它是一個範圍問題)。PHP函數範圍失敗

下面的函數是在一個文件中PATH.'/includes/custom-functions.php'引用的類:

function infusion() { 
     require_once(PATH.'/classes/infusion.php'); //PATH is defined in WordPress from ~/wp-content/themes/theme/ 
     return new infusion(); 
    } 

類是從/api/目錄中的另一個文件PATH.'/api/isdk.php'和連接憑據依賴。從PATH .'/includes/custom-functions.php'以內,我有許多其他功能,調用$infusion = infusion();並完美工作。

問題
我創建了一個新的文件:PATH.'/includes/report.php',我需要訪問$infusion = infusion();但不能獲得通過或者重複從上面的定義function infusion()工作;使用require_once();;或使用include();。所有這三個選項都只是殺死了其餘的代碼,我只能得出結論 - 嗯,我沒有任何結論。

任何幫助將不勝感激。

回答

1

我假設代碼沒有使用名稱空間,因此您不允許重新聲明infusion函數(通過重新定義函數或重新包括該類)。

includes/report.php文件應該只是有:

require_once PATH.'/includes/custom-functions.php'; 

// your other code here ... 

$infusion = infusion(); 

這可能是其它文件/類,你包括你的文件已經要求沿線custom-functions.php的情況下,所以你可能能夠完全跳過。另請注意,在嘗試使用它之前,應該已經在某處定義了PATH常量(直接或通過include d文件)。如果您將error_reporting設置爲包含E_ALL,那麼如果該常數不存在,您將在錯誤日誌中收到通知。

如果失敗,您的錯誤日誌可能會提供一些關於您的問題的額外背景信息。

+0

我將不得不捅更多... 仔細檢查,沒有一個問題的文件已經需要'custom-functions.php','PATH'常量已經被聲明之前引用它,但是當我添加'require_once();'時,它會中斷輸出,所以我嘗試添加錯誤報告。 – macgregor 2013-04-10 20:33:39

+0

我回來了,同樣的問題,讓我完全失去了模糊! 我有一個像這樣打開的文件handler.php: – macgregor 2013-08-29 22:01:45