首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP $GLOBALS建议

PHP $GLOBALS建议
EN

Stack Overflow用户
提问于 2011-03-23 22:46:52
回答 1查看 1.6K关注 0票数 0

我注意到Interspire Shopping Cart将很多类初始化为PHP的$GLOBALS变量。执行此操作时是否存在任何性能或安全问题?

下面是一个假文件,但写的类似于Interspire购物车的文件。

代码语言:javascript
复制
<?php 
// account.php

$GLOBALS['USER_ACCOUNT'] = new USER_ACCOUNT();
$GLOBALS['USER_ACCOUNT']->createPage(); //creating the page

?>

我注意到,在创建页面的过程中(见上),包含的其他文件将需要访问$GLOBALS‘’USER_ACCOUNT‘。所以这个类实例以后会被其他人所需要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-24 01:18:51

执行此操作时是否存在任何性能或安全问题?

不,但这是一种糟糕的做法。在全局作用域中存储数据可能是糟糕设计的标志。过多的全局参数是一种“代码气味”,但我并没有从这种特定的用法中得到它。

正如评论中提到的,他们似乎滥用了全局变量,而不是implementing the Registry pattern,后者旨在允许这种类型的行为,而不会污染全局范围。

许多其他语言实际上没有变量的全局作用域,这意味着它们必须使用Registry (或类似的东西)。PHP只是碰巧让做错误的事情变得容易。

使用注册表而不是全局变量也可以更容易地对代码执行自动化测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5407015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档