gpt4 book ai didi

php - php中包含文件的范围丢失

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:21 25 4
gpt4 key购买 nike

有一些与此相关的帖子,但我没有看到任何接近我正在努力应对的情况。

我继承了一个相当大的代码库,原始设计者采用了一些有趣的设计方法。我正在尝试调用已定义的类的方法。类文件本身设置了一些全局变量。我从一个函数中调用这个方法,我还包含了这个文件。方法运行时,不再定义全局变量。见下文:

我的文件:

<?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

我个人不会在这样的脚本中声明全局数组,但我看不出我不应该访问它们的理由。

有什么想法吗?谢谢!

最佳答案

由于您在函数中包含文件 - GLOBALS 不能在那里定义()。您可能想要做的是在(foo())之外include class.bar.php:

<?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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com