2013-07-02 31 views
3

我有以下簡單的代碼:PHP從一個類的方法訪問在全球範圍內功能

$a = 'hello'; 

function myfunc() { 
    echo 'in myfunc'; 
} 

class myclass { 
    function __construct() { 
     myfunc(); 
     echo $a; 
    } 
} 

$m1 = new myclass(); 

方法中的回聲$一個給出了一個錯誤,你所期望的,因爲$ a是一個在全球範圍內和如果沒有首先聲明它是全局的,就不能從類內部訪問。這在PHP手冊中有記錄。

對myfunc()的調用確實有效,我不明白爲什麼。它也在全局範圍內聲明,但該方法可以在不首先將其聲明爲全局的情況下訪問它。我似乎無法在PHP手冊中找到解釋其原因的任何內容。

也許我一直在做PHP太久,這是如此簡單,我忘記了它是如何工作的。任何洞察力或鏈接到PHP手冊中的哪裏,它說你可以從一個類的方法訪問一個全局函數,將不勝感激。

在此先感謝。

+1

我建議你接受@bwoebi的答案,因爲它是最好的解決你的問題的答案:) –

回答

4

函數沒有作用域(除非使用名稱空間)。只有方法在各處的類和變量中。

它應該工作;一切都是正確的:你可以從任何地方調用一次定義好的函數。

+0

謝謝。我在文檔中找不到任何內容,但很高興知道這很簡單。 –