如果尚未定义PHP全局变量,则函数内部为null

如果尚未定义PHP全局变量,则函数内部为null,php,phpbb,Php,Phpbb,我已经好几年没有使用PHP了。但现在我正尝试按照以下指南进行phpBB会话集成:。问题是,除非我去定义phpBB应用程序需要的所有全局变量,否则它将无法工作,因为它们在函数内部的运行时最终为null 因此,链接指南中的代码只有在我在上面添加这行php代码时才起作用: global $_SID, $auth, $cache, $config, $db, $phpbb_root_path, $phpEx, $SID, $template, $user; 这不是最优的,因为每次在phpBB代码库中引

我已经好几年没有使用PHP了。但现在我正尝试按照以下指南进行phpBB会话集成:。问题是,除非我去定义phpBB应用程序需要的所有全局变量,否则它将无法工作,因为它们在函数内部的运行时最终为null

因此,链接指南中的代码只有在我在上面添加这行php代码时才起作用:

global $_SID, $auth, $cache, $config, $db, $phpbb_root_path, $phpEx, $SID, $template, $user;
这不是最优的,因为每次在phpBB代码库中引入新的全局变量时,我都必须不断更新此全局声明:(是否有某种php ini设置我应该调整或做些什么,使其达到我不必声明的程度?

这就是php的工作方式:-)此指南已经过时。它发布于2007年10月8日。我同意你的观点,使用全局变量不是最优的。我没有解决方案,您必须在每个函数中声明这些(并保护您的变量)。如果存在解决方案,社区将使用它们。一些贡献者打算将它们打包成一个超级变量。但它被拒绝了(太危险、太慢等)

您仍在使用php3.0吗?如果你想提高代码质量,你应该将论坛升级到3.2版。新系统(使用扩展)非常好,基于Symfony的依赖注入

下面是对扩展的解释

理解起来有点复杂,所以这里有一个在开发环境中使用的示例


安装它并按照步骤获取“骨架代码”。您只需编辑它即可实现您的模型。

令人惊讶的是,PHP就是这样工作的。使用全局变量已经是一件坏事了,为什么要让它们更容易使用呢?哦我差点忘了。您的问题的答案是:不。使用globals可能会导致更多的问题,您应该将它们作为参数传递给函数。axiac的评论使它成为如此伟大的社区。