在将eval()称为纯邪恶时,我会保持谨慎。 动态评估是一个强大的工具,有时可以节省生命。使用eval()可以解决PHP的缺点(请参见下文)。
eval()的主要问题是:
- 潜在的不安全输入。 传递不受信任的参数是一种失败的方法。确保参数(或其一部分)受到完全信任通常不是一件容易的事。
- 整。 使用eval()使代码更聪明,因此更难遵循。用布莱恩·科尼根(Brian Kernighan)的话说:“ 调试是一开始编写代码的两倍。因此,如果您尽可能聪明地编写代码,就定义而言,您不够聪明,无法对其进行调试 ”
实际使用eval()的主要问题只有一个:
- 没有经验的开发人员在没有充分考虑的情况下使用它。
根据经验,我倾向于遵循以下规则:
- 有时eval()是唯一/正确的解决方案。
- 在大多数情况下,应该尝试其他方法。
- 如果不确定,请转到2。
- 否则,请 非常非常小心。



