【发布时间】:2015-03-01 04:26:21
【问题描述】:
我在wordpress 中工作,并且在functions.php 中有一个函数。这是为了根据使用变量的上下文设置一些变量。但是有一个问题。
我在包含的模板文件中使用该函数,该函数旨在处理包含模板文件的页面上的变量。我在函数中将所有变量声明为全局变量,但函数无法识别变量的值。我不明白为什么会这样,因为我确信变量范围被正确使用了。
为了消除混淆,我在下面包含了一个简化的代码示例,显示了此问题涉及的三个文件。如果有人知道为什么会发生这种情况,我会很高兴听到它。我有兴趣了解它发生的原因,而不是寻找解决方法。
functions.php
function set_variables() {
global $data;
print_r($data);
}
included_file.php
set_variables();
(Code that sets other variables and works with HTML)
template_file.php
$data = "Test";
include "included_file.php";
上面代码的结果是什么都没有——我无法让functions.php中的函数识别template_file.php中定义的变量。但是,如果我在 functions.php 中定义 $data 变量,它就可以工作。
就像我说的,这让我感到困惑,因为它似乎与在函数中声明全局变量的工作方式相矛盾。我怎么弄错了?
【问题讨论】:
-
嗯...
set_variable()和set_variables()不是一回事 -
真的是全球性的吗?你怎么知道?顺便说一句,你为什么需要一个全局变量 - 为什么不将它作为参数传递?
-
@Machavity - 这是创建示例时的错误 - 代码本身很好,但很冗长。我不想粘贴很多代码。
-
@zerkms - 我在函数中声明了全局变量,在另一个文件中使用了该函数,然后将该文件包含在模板中。我假设模板文件中声明的变量相对于函数调用是全局的。显然我在某个地方犯了一个错误,不知道是什么。
-
@user3628576 对于全局变量,它必须声明为
global任何地方使用它。或者它必须放在全局范围内。就这么简单,没错。
标签: php wordpress global-variables php-include