【发布时间】:2015-07-24 18:04:33
【问题描述】:
我在这里遗漏了一些基本的东西。我们需要访问在函数 do_stuff 中设置的变量 $myvar。这是该函数所在类的广义 sn-p。这个类和它的功能都可以正常工作。
class TestClass {
public function do_stuff() {
global $myvar;
$myvar= 'the value we want';
}
}
现在,稍后会出现问题...
$TestClass = new TestClass();
$TestClass->do_stuff();
function get_var() {
global $myvar;
echo $myvar; // here the value does NOT exist
}
get_var();
echo $myvar; // but here the value DOES exist
那么我错过了什么,为什么当我们在函数外部访问它时变量存在,但在函数内部访问时它不存在?
注意:这是我们所做工作的简化版本,因此虽然这个示例很简单,但它说明了我们面临的问题。我也明白很多人不喜欢全局变量。鉴于使用的遗留代码和框架,我们需要解决这个特定问题。
感谢您的帮助!
【问题讨论】:
-
您能否使用将值设置为 $myvar 的部分更新此简化版本的代码?在这个例子中我没有看到 TestClass::do_stuff 被调用。
-
你做这些事情的顺序是什么,你从哪里调用这个类,你什么时候包含它。如果您在设置之前尝试获取该值,那么它当然会为空
-
@ArtisiticPhoenix 我更新了代码以指示如何使用该类。为了简单起见,我之前省略了它,但我显然不够清楚。
-
@MattSmith - 看到更新对我来说效果很好,这是你拥有的函数,而不是闭包,对吧?
标签: php function class global-variables