Are global variables in PHP considered bad practice? If so, why?(PHP中的全局变量被认为是不好的做法吗?如果是这样,为什么?)
问题描述
function foo () {
global $var;
// rest of code
}
在我的小型 PHP 项目中,我通常采用程序化方式.我通常有一个包含系统配置的变量,当我需要在函数中访问这个变量时,我会执行 global $var;
.
In my small PHP projects I usually go the procedural way. I generally have a variable that contains the system configuration, and when I nead to access this variable in a function, I do global $var;
.
这是不好的做法吗?
推荐答案
当人们在其他语言中谈论全局变量时,它的含义与它在 PHP 中所做的不同.这是因为变量在 PHP 中并不是真正全局的.一个典型的 PHP 程序的范围是一个 HTTP 请求.会话变量实际上比 PHP 的全局"变量范围更广,因为它们通常包含许多 HTTP 请求.
When people talk about global variables in other languages it means something different to what it does in PHP. That's because variables aren't really global in PHP. The scope of a typical PHP program is one HTTP request. Session variables actually have a wider scope than PHP "global" variables because they typically encompass many HTTP requests.
通常(总是?)您可以像这样在 preg_replace_callback()
等方法中调用成员函数:
Often (always?) you can call member functions in methods like preg_replace_callback()
like this:
preg_replace_callback('!pattern!', array($obj, 'method'), $str);
查看回调了解更多信息.
关键是对象已经被绑定到 PHP 上,并且在某些方面会导致一些尴尬.
The point is that objects have been bolted onto PHP and in some ways lead to some awkwardness.
不要过分关注将不同语言的标准或结构应用于 PHP.另一个常见的陷阱是试图通过将对象模型粘贴到所有内容之上来将 PHP 转变为纯 OOP 语言.
Don't concern yourself overly with applying standards or constructs from different languages to PHP. Another common pitfall is trying to turn PHP into a pure OOP language by sticking object models on top of everything.
与其他任何事物一样,使用全局"变量、过程代码、特定框架和 OOP,因为它有意义、解决问题、减少您需要编写的代码量或使其更易于维护和理解,而不是因为你认为你应该这样做.
Like anything else, use "global" variables, procedural code, a particular framework and OOP because it makes sense, solves a problem, reduces the amount of code you need to write or makes it more maintainable and easier to understand, not because you think you should.
这篇关于PHP中的全局变量被认为是不好的做法吗?如果是这样,为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:PHP中的全局变量被认为是不好的做法吗?如果是这样,为什么?
基础教程推荐
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 在多维数组中查找最大值 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01