2011-04-01 54 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,但如果这样做包括内部作用域内(如方法,类),则此文件无法访问范围外的任何内容。