PHP:全局变量替代品?

标签 php global-variables

我正在从事一个 PHP 项目,有时我在网上阅读的东西和我在论坛上看到的东西等。我一直在读到你不应该使用 php globals。确保我没有把它与 PHP register_globals 混淆,因为我没有,我一直在研究,但我还没有真正找到原因或任何类型的替代方案。

所以,我的问题很简单。我不应该在 PHP 中使用 global 关键字吗?此外,如果我不应该(或应该),还有其他选择吗?原因是,我注意到我需要访问另一个文件中定义的变量,我需要在一个函数中引用或调用这个变量,很多函数,我有点累了或者使用 global $var_name; 代码就这么多。

有什么想法(或者我完全错了)?

最佳答案

静态类和单例只比全局类好一点点。静态类只是对全局变量进行分组,但变量本身仍然是全局可访问的单个实例变量。单例也是如此。尽管它们有其用途,但不应将它们用作全局变量的一般替代品。 PHP 让它变得很诱人,尤其是因为必须在函数中声明全局变量,而静态类始终随处可用。

您最好将变量放在一个类中(如“AppConfig”或更具体的类),并创建该类的实例来保存特定值。然后,将该实例传递给框架中的所有方法。这样,您就不会依赖特定的 Singleton 实现,并且真正灵活。

但是,我必须承认这是一项繁重的工作,尤其是当您还没有经验时。所以现在使用单例可能没问题,只要您在将来感觉单例在某个地方发痒时牢记这个答案即可。

关于PHP:全局变量替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6919667/

相关文章:

php - 意外标记附近的 Cron 语法错误

c++ - 全局对象中的 "term does not evaluate to a function taking ..."

c++ - 在低功耗多核微 Controller 中使用全局变量不好吗? (C++)

php - 将特色图片显示为缩略图?

php - 如何将日期选择器输入的日期转换为 PHP 中的特定格式?

php - Eclipse Xdebug 卡住在 57%

javascript - 如何将 window.onload 中的函数输出传递给另一个 javascript 文件?

javascript - NodeJS 全局变量不可重新分配

python - 将 Python 函数范围限制为仅局部变量

php - Symfony - app_dev.php 中的 ClassNotFoundException