小编典典

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

php

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

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

这是不好的做法吗?


阅读 374

收藏
2020-05-26

共1个答案

小编典典

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

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

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

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

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

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

2020-05-26