2012-05-29 60 views
0

我有一個好奇的問題,我正在將一個現有的應用程序導入到我的項目中。允許從類方法訪問包含文件中的全局變量

我有一個類有一個方法,需要在其中的功能的文件。這些函數使我們具有全局變量。

我注意到這些函數不能在它們之間共享一個全局變量,因爲它們是從類方法中調用的。

我知道如果我第一次聲明全局變量,那麼需要包含的函數可以使用它們的文件。我的問題是這些包含自己函數的文件有100個全局變量引用。瀏覽所有文件並重新聲明全局變量將非常耗時。

有沒有更直接的方法來做到這一點?

例子是

//class file 
class run 
{ 
    public function install() 
    { 
     require_once('file.php); 
    } 
} 

//file.php 
require('some/other/file.php); 
function checks() { 
    global $someVar; 
    $somVar->test(); 
} 

這顯然會拋出一個錯誤,如無法訪問測試(),以非對象的東西的東西,除非我內run::install()

+3

這就是爲什麼你應該(幾乎)從不使用全局變量 – galymzhan

+0

是,但我正在導入一個現有的應用程序,使用它們。 – Eli

+0

全球狀態真的很糟糕!你應該避免它,把你的方法需要的變量作爲參數傳遞(我看到你提到你正在嘗試將新代碼集成到傳統應用程序中,但你的新代碼可以使用參數而不是訴諸於全局)。 – GordonM

回答

0

聲明$ someVar還是做你需要的在全球層面的Wordpress文件(在任何其他事情之前),而不是從你的方法中。在你的例子中,你所需要的只是能夠訪問checks()函數。當然,交叉手指,沒有名稱衝突...

+0

嘗試每一種方式,我不會工作,除非我需要任何它的文件之前本地聲明wordpress的全局變量。 – Eli

+0

@Eli:當你嘗試時,你得到了什麼錯誤? –