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

标签 php global-variables global

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,因为它有意义、解决问题、减少您需要编写的代码量或使其更易于维护和理解,而不是因为你认为你应该这样做。

关于php - PHP中的全局变量被认为是不好的做法吗?如果是这样,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1557787/

相关文章:

javascript - 覆盖全局变量

c - 不同源文件中的共享变量

php - 如何通过命令行运行php文件?

php - 如果运输方式是 Woocommerce 中的本地取货,则需要填写订单备注

c - 全局结构数组

scope - 在 julia 1.0.0 中使用 for 循环确定范围对初学者有意义吗?

php - 如何在将 .CSV 格式的文件导入 SQL 时验证员工 ID?

php - Youtube视频PHP API 'too_many_recent_calls'

javascript - 为什么我的全局变量在局部声明之前被隐藏了?

c++ - 未命名的命名空间与全局声明