无法绕过全局数组

时间:2013-11-14 00:08:04

标签: php

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

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

的login.php

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

$body="
some scripting here";

?>

global.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?我尝试过很多不同的东西,但似乎没什么用。

2 个答案:

答案 0 :(得分:0)

Login.php包括global.php$body仅在Login.php被定义为global.php之后定义 - 这就是为什么你不能在{{1}中使用它}}

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

答案 1 :(得分: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);
?>