在我用php开发的所有年份中,我一直都听说使用eval()是邪恶的。
eval()
考虑以下代码,使用第二个(更优雅)的选项是否有意义?如果没有,为什么?
// $type is the result of an SQL statement // e.g. SHOW COLUMNS FROM a_table LIKE 'a_column'; // hence you can be pretty sure about the consistency // of your string $type = "enum('a','b','c')"; // possibility one $type_1 = preg_replace('#^enum\s*\(\s*\'|\'\s*\)\s*$#', '', $type); $result = preg_split('#\'\s*,\s*\'#', $type_1); // possibility two eval('$result = '.preg_replace('#^enum#','array', $type).';');
在将eval()称为纯邪恶时,我会保持谨慎。 动态评估是一个强大的工具,有时可以节省生命。使用eval()可以解决PHP的缺点(请参见下文)。
eval()的主要问题是:
实际使用eval()的主要问题只有一个:
根据经验,我倾向于遵循以下规则: