当前位置: 首页 > 面试题库 >

extract()有什么问题?

施德运
2023-03-14
问题内容

最近,我在一些最差的PHP实践中阅读了此线程。在第二个答案中,有一个关于的使用的简短讨论extract(),我只是想知道所有有关的内容。

我个人使用它来切分给定的数组,例如$_GET$_POST稍后在其中清理变量,因为它们已为我方便地命名。

这是不好的做法吗?这有什么风险?您对的使用extract()有何看法?


问题答案:

我发现这只是一种不好的做法,因为它会导致许多变数,将来的维护者(或您自己在几周内)都不知道它们的来源。考虑这种情况:

extract($someArray); // could be $_POST or anything

/* snip a dozen or more lines */

echo $someVariable;

哪里$someVariable来的?谁能告诉?

我看不出在从阵列中访问这些变量,他们开始在这个问题,那么你真的需要展示一个良好的情况下,
使用extract()我认为这是值得的。如果您真的很担心要输入一些额外的字符,请执行以下操作:

$a = $someLongNameOfTheVariableArrayIDidntWantToType;

$a['myVariable'];

我认为这里有关安全性的评论有些夸张。该函数可以使用第二个参数,该参数实际上可以使您对新创建的变量有相当好的控制,包括不覆盖任何现有变量(EXTR_SKIP),仅覆盖现有变量(因此您可以创建白名单)(EXTR_IF_EXISTS)或为变量添加前缀(EXTR_PREFIX_ALL)。



 类似资料:
  • 问题内容: 关于python 3.0中reduce()函数的更改以及如何删除它,网上似乎有很多热烈的讨论。我有点难以理解为什么会这样。我发现在各种情况下使用它是很合理的。如果蔑视仅仅是主观的,我无法想象会有这么多人关心它。 我想念什么?reduce()有什么问题? 问题答案: 正如Guido在Python 3000 帖子中的reduce()的命运中所说: 所以现在reduce()。实际上,这是我一

  • 问题内容: 我简直不敢相信我网站上正在发生的事情。当我添加此行时: 一切正常。如果我不这样做,CSS就会“混乱”,一切都会变得不同,布局也会变得“丑陋”。 这条线如何解决所有问题? 问题答案: 您正在将HTML与XHTML混合使用。 通常,声明用于区分HTMLish语言的版本(在这种情况下为HTML或XHTML)。 不同的标记语言将表现不同。我最喜欢的例子是。在浏览器中查看以下内容: XHTML

  • 问题内容: 该代码在第一个“等级”之后保持两次打印。有谁知道为什么要打印两次?我做错了“ For Loop”吗? 问题答案: 这是“两次打印”,因为当您按回车键输入一个字符时,实际上是在写两个字符:您键入的字符和(换行符)。 添加第二个调用以读取换行符: 同样,不需要初始化为in 也可以。实际上,在此循环中使用a没有意义,首选使用a 。

  • 问题内容: 我正在尝试使用openFileOutput函数,但它无法编译且无法识别该函数。我正在使用android sdk 1.6。这是SDK问题吗?这是参数问题吗? 问题答案: 您的方法应如下。将额外的上下文作为参数。对于这种方法,您可以通过您的服务或活动

  • 我的这段代码挑战了我所有的c语言知识。 在我的“64位 - Corei5 - Fedora - GCC”上,它打印出我喂养它的东西。但是在我朋友的系统上(32位,MS XP,最小值),它打印。我不明白为什么。有人知道吗? 顺便说一句:他的系统上的sizeof(unsigned long long int)是8。

  • 提示:Extra content at the end of the document这样的错误