我正在阅读 OpenCart 和 phpBB 引擎的源代码,并注意到有很多字符串(有时是全屏列表)带有重复的代码,它们仅在一个参数上有所不同。如:
$this->data['button_cart'] = $this->language->get('button_cart');
$this->data['button_wishlist'] = $this->language->get('button_wishlist');
$this->data['button_compare'] = $this->language->get('button_compare');
$this->data['button_continue'] = $this->language->get('button_continue');
我正在考虑使用函数来使用模式生成代码,然后eval()
是它。
一些这样的功能:
function CodeGenerator($patern, $placements_arr){
$echo_str = '';
foreach($placements_arr as $placement){
$echo_str .= str_replace('=PATERN=', $placement, $patern);
}
if(substr($echo_str, -1)!==';'){
$echo_str .= ';'; # for correct eval() working
}
return $echo_str;
}
然后对于具有相同模式的大量重复代码块:
$patern = "$this->data['=PATERN='] = $this->language->get('=PATERN=');";
$placements_arr = array('button_cart', 'button_wishlist', 'button_compare', 'button_continue');
$echo_str = CodeGenerator($patern, $placements_arr);
eval($echo_str);
我想了解这种设计的PRO和CONTRA,因为我正在考虑在我未来的发展中使用这种设计。
我现在在这里看到的唯一问题 - 执行速度有点慢。还有其他人吗?