1

昨晚我问过这个问题,但答案告诉我研究全局数组。在花了一整天试图解决这个问题后,我牺牲了我的人卡,现在我正在寻求帮助。我有 3 个文件一起工作以回显一个变量$body。这 3 个文件是 login.php、global.php 和 theme.php。

登录文件按预期工作,并在我用 echo 替换 $body 时显示我已经登录的消息,但是为了轻松有效地合并我的主题,我想使用变量 $body 进行放置。当我在主题文件中回显 $body 时,什么也没有出现。这是我的文件的一个简单示例

登录.php

<?php 
include('../tools/global.php');

$body="
some scripting here";

?>

全局.php

<?php

function function1(){

   global $body;

}
function1();
print_r($body);

include('../theme/default.php');
include('config.php');


?>

default.php 又名 theme.php 文件

<table border='0'>
<tr>
<td colspan='2'>
<center>bar</center>
</td>
</tr>
<tr>
<td width='10%'>
hey<br>hey<br>
</td>
<td>
hello
<?php

echo $body;
?>

</td>
</tr>
</table>

好的,那么我将如何注册全局 $body 以便它始终在主题文件中回显 $body ?我尝试了许多不同的东西,但似乎没有任何效果。

4

2 回答 2

0

Login.php包含global.php但仅 在包含后才$body定义- 这就是为什么您不能在Login.phpglobal.phpglobal.php

如果您想在其中使用它 global.php- 在那里声明它!

于 2013-11-14T00:11:57.870 回答
0

我认为你得到的关于研究全局变量的建议可能是糟糕的建议。全球几乎从来都不是答案。您也错误地使用它们。global 关键字允许您在函数内使用全局变量(在函数外部定义)。就是这么简单。但是,将变量作为参数传递给函数会更好。当您有想要在不同文件中重复使用的内容时,请将其放在包含文件的函数中,而不仅仅是包含文件的主体。例如,在 global.php 中,您有:

<?php
function renderPage($body) {
?>
<table border='0'>
<tr>
<td colspan='2'>
<center>bar</center>
</td>
</tr>
<tr>
<td width='10%'>
hey<br>hey<br>
</td>
<td>
hello
<?php

echo $body;
?>

</td>
</tr>
</table>

<?php
    }
?>

然后在 login.php 中:

<?php
require('global.php');
$body = 'This is the login page.';
renderPage($body);
?>
于 2013-11-14T00:53:51.773 回答