php - PHP中的全局变量被认为是不好的做法吗?如果是这样,为什么?

这个问题在这里已经有了答案:
关闭3天前
function foo () {
    global $var;
    // rest of code
}

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

这是不好的做法吗?

最佳答案

当人们在其他语言中谈论全局变量时,它的含义与它在 PHP 中所做的不同。这是因为变量在 PHP 中并不是真正全局的。一个典型的 PHP 程序的范围是一个 HTTP 请求。 session 变量实际上比 PHP 的“全局”变量范围更广,因为它们通常包含许多 HTTP 请求。

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

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

见 callbacks了解更多。

关键是对象已经被绑定(bind)到 PHP 上,并且在某些方面会导致一些尴尬。

不要过分关注将不同语言的标准或结构应用于 PHP。另一个常见的陷阱是试图通过将对象模型粘贴到所有内容之上来将 PHP 转变为纯 OOP 语言。

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

https://stackoverflow.com/questions/1557787/

相关文章:

php - Apache 正在下载 php 文件而不是显示它们

php - 如何在函数调用中跳过可选参数?

php - 日期减去 1 年?

php - Ubuntu 在终端输入 'php' 显示很多错误

php - 如何使用 PHP 检查远程文件是否存在?

php - 解释 $CI =& get_instance();

php - GD vs ImageMagick vs Gmagick for jpg?

php - PHP 中 JavaScript 的 encodeURIcomponent 等价物是什么

php - 将秒转换为天、小时、分钟和秒

php - 防止 Laravel 向数据透视表添加多条记录