2013-07-03 89 views
0

考慮這個PHP腳本:Drupal頁面中全局PHP變量的範圍是什麼?

<?php 
    $a = "ok"; 
    function foo() { 
    global $a; print "[$a]"; 
    } 
    foo(); 
?> 

它打印[ok]當用PHP解釋器中運行正如人們所期望。但如果在Drupal頁面中運行,它僅打印[]。爲了使其在Drupal的工作,我有這樣的變量聲明之前添加另一個全球規格:

<?php 
    global $a; // WHY IS THIS NEEDED IN DRUPAL? 
    $a = "ok"; 
    function foo() { 
    global $a; print "[$a]"; 
    } 
    foo(); 
?> 
+1

同一臺服務器?相同版本的PHP? – Pitchinnate

+1

[參考:什麼是變量作用域,哪些變量可以從哪裏訪問以及什麼是「未定義變量」錯誤?](http://stackoverflow.com/questions/16959576/reference-what-is-variable-scope -which-variables-are-accessible-from-where-and) – deceze

回答

1

可能是因爲Drupal的包括函數內部文件:

function render() { 
    include 'my_script.php'; 
} 

這使得$a本地功能,而不是global

+0

完全解釋它......謝謝! – yanivh