2011-04-01 53 views
0

我有一個情況,我有2個文件,File AFile B1。然後我有20個其他腳本,包括這些文件。文件A包含一些在文件B中實例化的類。當使用php包含文件時變量的範圍

如果一個變量在文件A中的類內發生更改,它將更改爲所有20個腳本?

我有一個非常奇怪的問題,其中的東西正在更新,當我把一些調試代碼的每個點,該變量被更改,它不會觸發。這是問題的原因,因爲它似乎像其他19個文件,包括這些是造成變化的一個...

澄清:

我不包括文件不止一次。我有20個不同的腳本單獨運行,包括SAME文件(只做一次)。這是因爲我只需要在更改1個文件時更新所有其他文件並使用該文件。如果在一個文件中的類中更改了公共變量,是否更改了所有20個文件。

THanks。

回答

1

是的。

包含的文件中包含的任何範圍內,可以納入。

如果包括在最上方的範圍文件,然後它有一個範圍。 如果你通過函數包含一個文件,那麼它的作用域就在這個函數內。

+0

因此,如果腳本1更改文件A中的變量,那麼腳本20將在包含文件A時看到該新值? – webnoob 2011-04-01 21:03:34

+0

嗯,不,你不應該多次使用include_once()或require_once()包含一個文件,不管它多少次被調用,它都只包含一次文件。但讓我們說你有FileA,看起來像'$ a = 2; include_once( 'FILEB'); include_once('FileC');'和'FileB'做'$ a = 5;'和FileC做'echo $ a',那麼輸出就是'5'。基本上,一個包含/必需的文件就像是如果你在該包含文件中採用了該代碼或其他文件,並將其真正複製/粘貼到包含include()調用點的文件中。 – Phoenix 2011-04-02 02:10:11

+0

我不認爲我清楚我的包裝。我不是多次包含一個文件。我有20個不同的腳本單獨運行,包括SAME文件(只做一次)。這是因爲我只需要在更改1個文件時更新所有其他文件並使用該文件。如果全局變量在該ONE文件內發生更改,是否更改了全部變量?對不起,如果不明確。 – webnoob 2011-04-06 10:00:55

0

如果你有20個腳本每次都包含「文件A」,所以每個實例都會改變他自己的「文件A」類,你可以做的是使用include_once或require_once,那麼如果你已經包含文件A對於同一個文件的下一個包含將不會被調用,如果您已經包含文件並且您不記得,那麼它很有用,現在對於「範圍問題」,如果您在functionB內部創建functionA,那麼只在functionB內部可以使用functionA,如果將fileA包含在fileB中,fileB包含在fileB中,它將工作爲greate,但如果這樣做包括內部作用域內(如方法,類),則此文件無法訪問範圍外的任何內容。