私はOpenCartとphpBBエンジンのソースを読んでいて、1つのパラメーターだけが異なる、コードが繰り返された文字列(フルスクリーンリストの場合もある)がたくさんあることに気づきました。そのような:
$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を理解したいと思います。
私が今ここで見ている唯一の問題は、実行が少し遅いことです。他のもの?