2013-03-22 82 views
0

我很新的PHP,我習慣於寫.net,我發現包括很難理解,並希望有人可以幫助我瞭解如何正確使用包括曾經在一個文件中,而不是內的各功能..使用包括在整體PHP而不是每個功能

採取以下作爲一個例子

<?php 
include 'test.php'; 

function test($a) 
{ 
echo $value_from_test_php; 
} 
?> 

似乎上面的代碼中並沒有工作......但是下面確實

<?php 

function test($a) 
{ 
include 'test.php' 

echo $value_from_test_php; 
} 
?> 

我很難弄清楚如何使一個文件中的所有函數都包含工作,而不是將它包含在每個函數中,任何建議都非常感謝!

+1

答案在於PHP文檔:「當包含文件時,它包含的代碼將繼承包含所在行的變量範圍。」 – Rafe 2013-03-22 05:10:21

回答

0

這一切都取決於你在文件裏面的是什麼include -ing!我永遠不會建議在函數內部使用include(或循環,或者使用括號中的任何東西)。請記住,所包含文件的內容實際上只是「plopped in」的地方,就是include聲明所在的位置。因此,當你在include時所處的範圍(全局,類,函數等),其內容將被聲明爲的範圍。

將全部類和函數定義放入文件中,並將include放在文件中他們將要使用的文件的頂部。

+0

我可以建議加入一些關於變量範圍的詞。這將有助於消除OP的困惑,並建立在這個好建議 – 2013-03-22 05:11:29

0

第一個例子是行不通的,因爲我們使用的變量,從全球範圍內,如果你想使用它則更換$value_from_test_php$GLOBALS['my_var_name']

+0

如何爲$ globals ['my_var_name']分配一個變量,我試圖包含的php文件基本上由大約20行組成,如果$ cfg ['ip] =「0.0.0.0」,所以當我包括(或要求)的文件,我可以在第二個PHP文件做$ cfg ['ip'] ... – Brad 2013-03-22 06:21:59

+0

@Brad你不需要。例如,在您的test.php文件中,您可以在全局範圍內包含任意數量的變量,例如 - $ dude ='dude';在這行php後自動分配$ GLOBALS ['dude']對$ dude變量的引用(記住它在全局範圍內!)。 你可以在方法,函數,其他文件中使用$ GLOBALS ['dude'] anywere,這就是爲什麼$ GLOBALS數組屬於超全局數組的原因 – kirugan 2013-03-22 06:53:16

+0

有關'include'的幾句話 - 將它看作文件之間的粘連,它不像Python中的特殊模塊(或者包中的java)有特殊的作用域,如果你用第一個例子中的include語句替換test.php中存在的代碼,你會得到相同的結果。你會因爲範圍問題而導致錯誤,就像我在帖子中說的那樣 – kirugan 2013-03-22 07:34:02

0

你的問題是不相關的包括,而是variable scope。默認情況下,函數外定義的變量在函數中不可用。

很難建議最好的解決方案,但不知道你想要做什麼,但文檔(上面鏈接)應該讓你開始。

1

這可變的,其困擾你而不是包括所述範圍,在PHP一般包括用於那裏的一個共同的頁面/標記被包括在每一頁上,如頁腳,標題等

有4種類型的

  • include
  • include_once
  • require
  • require_once

唯一的區別是,如果出現錯誤include將拋出你的錯誤,並會繼續執行腳本,require將暫停進一步執行

您會在這裏上得到的一切包括 - PHP Documentation