Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php包含文件时的变量范围_Php_Oop - Fatal编程技术网

使用php包含文件时的变量范围

使用php包含文件时的变量范围,php,oop,Php,Oop,我有两个文件,文件a和文件B1。然后我有20个其他脚本,包括这些文件。文件A包含一些在文件B中实例化的类 如果一个变量在文件a中的一个类中发生更改,那么它是否会在所有20个脚本中发生更改 我遇到了一个非常奇怪的问题,当我在变量更改的每个点上放置一些调试代码时,它不会触发。这就是问题的原因,因为似乎包括这些文件在内的其他19个文件中的一个正在引起更改 澄清: 我不止一次包含一个文件。我有20个不同的脚本分别运行,其中包括同一个文件(只做一次)。这样,当我进行更改时,我只需要更新1个文件,而所有其他

我有两个文件,
文件a
文件B1
。然后我有20个其他脚本,包括这些文件。文件A包含一些在文件B中实例化的类

如果一个变量在文件a中的一个类中发生更改,那么它是否会在所有20个脚本中发生更改

我遇到了一个非常奇怪的问题,当我在变量更改的每个点上放置一些调试代码时,它不会触发。这就是问题的原因,因为似乎包括这些文件在内的其他19个文件中的一个正在引起更改

澄清:

我不止一次包含一个文件。我有20个不同的脚本分别运行,其中包括同一个文件(只做一次)。这样,当我进行更改时,我只需要更新1个文件,而所有其他文件都使用该源。如果一个公共变量在该文件中的一个类中发生了更改,那么对于所有的20个文件它都会发生更改


谢谢。

如果您有20个脚本,每次单独包含“文件A”,因此每个实例都会更改自己的“文件A”类,您可以使用include_一次或require_一次,那么如果您已经包含文件A,则不会调用同一文件的下一个include,如果您已经包含文件,并且您不记得了,这将非常有用,现在,对于“范围问题”,如果您在functionB中创建functionA,那么只有在functionB中才能使用functionA,它对文件的作用是相同的,如果您在fileB中包含fileA,在fileB中包含fileC,它的作用将更大,但是如果您这样做,则包含在内部范围(如方法、类)中,此文件无法访问范围之外的任何内容

是的

包含的文件包含在其包含的任何作用域中

如果将文件包含在最顶层的作用域中,则该文件具有该作用域。
如果通过函数包含一个文件,那么它的作用域就在该函数内

因此,如果脚本1更改了文件a中的变量,那么脚本20在包含文件a时将看到该新值?不,您不应该使用include_once()或require_once()多次包含一个文件,无论调用多少次,它都只包含该文件一次。但假设您有一个类似于
$a=2的文件a;包括一次(“文件B”);包括一次(FileC)
和执行
$a=5的文件B
和不回显$a的FileC,则输出为
5
。基本上,包含/必需的文件与您在包含的文件中获取代码或任何内容并在include()调用时将其复制/粘贴到执行包含操作的文件完全相同。我不止一次包含一个文件。我有20个不同的脚本分别运行,其中包括同一个文件(只做一次)。这样,当我进行更改时,我只需要更新1个文件,而所有其他文件都使用该源。如果在一个文件中更改了全局变量,是否所有文件都更改了全局变量?抱歉,如果不清楚。如果手动更改,即在文本编辑器中,则为“是”。如果它是通过脚本更改的,则不会。每次包含该文件时,它都包含在原始格式中
$a
将始终等于
2
(使用我给出的最后一个示例)