【发布时间】:2013-09-02 07:49:39
【问题描述】:
有很多类似的问题,但我无法解决: 我尝试在这样的包含文件中使用全局变量:
包含的.php:
<?php
function some_function()
{
$GLOBALS['username'] = $_SERVER["REMOTE_USER"];
}
?>
first.php:
<?php
include 'included.php';
some_function()
echo '<p>Hello ' . $GLOBALS['username'] . '!'</p>'
?>
second.php:
<?php
include 'included.php';
echo '<p>Hello ' . $GLOBALS['username'] . '!'</p>'
?>
first.php 的输出工作正常,但是在 second.php 中有一个错误:
注意:未定义索引:第 36 行 /var/www/students/reservations.php 中的 student_firstname
所以我的目标是在我的整个项目中使用这个全局变量“用户名”,我不想每次都调用 some_function(),因为 SQL 查询中有更多变量,所以这会花费太长时间。
有什么好的方法可以做到这一点,或者你能推荐我另一种方法吗? 谢谢!
【问题讨论】:
-
当您需要使用全局变量时,这是一个糟糕的设计。你应该尽量避免这种方法
-
那么你有什么建议?我总是在需要变量时执行 SQL 查询?
-
所以问题是当你不调用函数时变量没有被设置......那么在
included.php中调用函数呢,或者不将代码包装在一个函数中需要单独调用吗?也是的,全局变量是不好的做法。您应该准备一次该变量,然后根据需要将其传递给函数。 -
实现一个构建底层缓存层的接口。因此,当您调用
getUser()时,它会存储上一次调用的副本并返回结果。您还应该花时间构建缓存失效器,以使该系统正常工作。
标签: php include global-variables