擅长:python、mysql、java
<p>值得指出的是,<code>extract()</code>(在较小程度上,<code>compact()</code>)是PHP最“邪恶”的特性之一(以及<code>register_globals</code>和<code>eval</code>),应该避免吗</p>
<p><a href="http://php.net/manual/en/function.extract.php" rel="nofollow noreferrer">^{<cd5>}</a>使确定变量的定义位置变得更加困难。当很难将变量追溯到其定义的位置时,就很难检查常见的安全问题,如使用未初始化的变量,或源于用户输入的未过滤变量</p>
<p><a href="http://php.net/manual/en/function.compact.php" rel="nofollow noreferrer">^{<cd6>}</a>并没有那么糟糕,但如果使用不当,仍然会使查看数组成员从变量中设置的位置变得更加困难</p>
<p>在许多其他语言中<code>extract()</code>的等价物是<code>with</code>关键字。Python现在有一个<code>with</code>关键字,尽管它的工作方式有点不同,这使得它不像<code>extract()</code>。但是,在其他语言(如Javascript)中,<code>with</code>关键字<a href="http://yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/" rel="nofollow noreferrer">also has a poor reputation</a></p>
<p>我认为最好的建议是换一种方式思考——与其尝试模仿PHP的一个糟糕特性,不如考虑其他方法,用简洁易读的代码来完成您想要的任务</p>