PHP中需要全局变量和超全局变量的原因是,它们使得代码可以更容易地在不同的作用域和函数之间共享数据,而无需显式地将数据传递给每个函数。
全局变量允许在脚本的任何地方访问和修改数据,这对于需要在不同的函数之间共享数据的程序非常有用。但是,全局变量也有一些缺点,例如它们可能会导致命名冲突和代码可读性降低。
超全局变量是一组在脚本启动时自动创建的全局变量,它们可以在整个脚本中访问。它们被称为“超全局”变量,因为它们在脚本的任何地方都是可用的,无需使用 global 关键字声明。超全局变量的常见用途包括获取表单提交的数据、管理用户会话、访问服务器环境变量等。
底层原理是,PHP 在运行时会创建一个全局数组 $_GLOBALS,用于存储全局变量和超全局变量。当您定义一个全局变量时,实际上是将变量的值添加到 $_GLOBALS 数组中的一个键名为变量名的元素中。当您访问一个全局变量时,PHP 实际上是在 $_GLOBALS 数组中查找该变量名的元素。
总之,全局变量和超全局变量使得程序员可以在不同的函数和作用域之间共享数据,但是也需要注意避免命名冲突和其他潜在的问题。