有一些帖子与此相关,但我没有看到任何接近的情况,我正在挣扎。
我继承了一个相当大的代码库,最初的设计师采用了一些有趣的设计方法。我试图调用一个已定义类的方法。类文件本身设置了一些全局变量。我从一个函数调用这个方法,其中还包括这个文件。当方法运行时,不再定义全局变量。见下文:
我的文件:
<?php //myScript.php
echo("Calling foo(): ");
foo();
function foo() {
include '../../php/class.bar.php';
$bar = new bar();
$bar->doSomething();
}
?>
../../php/class.bar.php:
$GLOBAL_ARRAY_ONE[0] = 'Here I am';
$GLOBAL_ARRAY_ONE[1] = 'JT';
class bar {
public $itsFoo = array();
public $itsBar = array();
public function doSomething() {
global $GLOBAL_ARRAY_ONE;
$this->itsFoo[0] = $GLOBAL_ARRAY_ONE[0];
$this->itsFoo[1] = $GLOBAL_ARRAY_ONE[1];
var_dump($this->itsFoo);
}
}
所以,当我运行“myscript.php”时,输出是:
calling foo(): NULL
我个人不会在这样的脚本中声明全局数组,但是,我没有理由不访问它们。
有什么想法吗?谢谢!
最佳答案
因为您include
函数中的文件-GLOBALS
不能在那里定义(两者都不是)。你可能想做的是在外面:
<?php //myScript.php
include '../../php/class.bar.php';
echo("Calling foo(): ");
foo();
function foo() {
$bar = new bar();
$bar->doSomething();
}
?>
关于php - 范围损失在PHP中包含的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12397149/