Extract() 有什么问题?
我最近在阅读这个帖子,关于一些最糟糕的PHP实践。在第二个答案中,有一个关于使用的迷你讨论,我只是想知道所有的huff是什么。extract()
我个人用它来切碎一个给定的数组,例如或者我稍后清理变量的位置,因为它们已经方便地命名为我。$_GET
$_POST
这是不好的做法吗?这里有什么风险?你对使用有什么想法?extract()
我最近在阅读这个帖子,关于一些最糟糕的PHP实践。在第二个答案中,有一个关于使用的迷你讨论,我只是想知道所有的huff是什么。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
现在就来吧。人们责怪工具而不是用户。
这就像反对,因为你可以用它删除文件。 是一个像任何其他函数一样的功能,明智而负责任地使用它。但不要说它本身很糟糕,那只是无知。unlink()
extract()