使用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
(使用我给出的最后一个示例)