当前位置: 首页 > 面试题库 >

PHP中的全局变量是否被视为不良做法?如果是这样,为什么?

顾学真
2023-03-14
问题内容

function foo () {
global $var;
// rest of code
}

在我的小型PHP项目中,我通常采用过程方式。通常,我有一个包含系统配置的变量,当我需要在函数中访问此变量时,我会这样做global $var;

这是不好的做法吗?


问题答案:

当人们谈论其他语言的全局变量时,这意味着与PHP中的操作有所不同。那是因为变量在PHP 中并不是 真正的
全局变量。典型的PHP程序的范围是一个HTTP请求。会话变量实际上比PHP“全局”变量具有更大的范围,因为它们通常包含许多HTTP请求。

通常(总是?),您可以在像preg_replace_callback()这样的方法中调用成员函数:

preg_replace_callback('!pattern!', array($obj, 'method'), $str);

关键是对象已被螺栓连接到PHP上,并且在某些方面导致笨拙。

不要在将标准或不同语言的构造应用于PHP时过度担心自己。另一个常见的陷阱是,通过将对象模型置于一切之上,试图将PHP变成纯OOP语言。

像其他任何东西一样,使用“全局”变量,过程代码,特定的框架和OOP,因为它有意义,可以解决问题,减少了您需要编写的代码量,或者使其更易于维护和理解,而不是因为您认为你应该。



 类似资料:
  • 问题内容: 我一直看到警告,不要在JavaScript中使用全局变量,但是似乎人们说这的唯一原因是因为阻塞了全局名称空间。我可以想象通过将所有变量放入一个大对象中来轻松解决此问题。现在的问题是:除了方便起见,还有其他原因不使用全局变量吗?它们是否涉及任何性能或兼容性问题? 问题答案: 它们使全局名称空间混乱,并且查找速度比局部变量慢。 首先,拥有许多全局变量始终是一件坏事,因为很容易忘记您在某个地

  • 问题内容: 我目前遇到一个问题,我有两个我需要调用的模块,它们需要能够修改相同的变量。 我决定创建一个名为的全局变量,并在其中存储所需的变量。 但是我一直在阅读,使用全局变量是一种不好的做法。为什么? 我仅创建一个变量,该变量不应与其他任何冲突,因为它是我的应用程序的名称。 问题答案: 几乎在所有编程语言中,全局变量都被视为反模式,因为它们使遵循和调试代码变得非常困难。 浏览代码时,您永远不知道哪

  • 问题内容: 我大致认为使用iframe是“不好的做法”。 这是真的?使用它们的优点/缺点是什么? 问题答案: 与所有技术一样,它也有起有落。如果您要使用iframe到一个经过适当开发的网站周围走走,那当然是个坏习惯。但是,有时iframe是可以接受的。 iframe的主要问题之一与书签和导航有关。如果您使用它只是将页面嵌入内容中,我认为很好。这就是iframe的用途。 但是我也看到iframe也被

  • 问题内容: 多年来,我尽力避免出现这种情况。在适用时使用多态或访客模式。我想它在某些情况下可以简化维护工作…还有其他应注意的缺点吗? 但是我确实在Java库中到处都看到它,所以我想它有它的位置吗?在什么情况下更可取?是否不可避免? 问题答案: 我可以想象某些情况,例如您有一个库的对象,您无法扩展这些对象(或者这样做很不方便),也许与您的某些对象混合在一起,这些对象都具有相同的基类,并且一起采集。

  • 问题内容: 我们正在将两个系统集成到一个Intranet中,使用CORS作为在两个域之间进行AJAX调用的一种方式。 这被认为是不良做法吗?一般认为CORS是不良做法吗? 问题答案: CORS不是坏习惯。它支持所有主要的浏览器,而且越来越多的API都支持它。实际上,如果您的公共资源不在防火墙后面,则可以将标头放在资源上是安全的。 但是,对于服务器上CORS的角色有些困惑。CORS应该仅指示特定资源

  • 这是我写的一个脚本的摘录: 我的一个同事说,这里使用全局变量是不好的。 我可以看出这有多么不方便,因为我必须先使用,然后才能将其递增1。 但是为什么使用全局被认为是糟糕的编程呢? 如果这是一个非常明显的问题,我很抱歉,我对Python相对陌生,并试图尽可能多地理解事物。