我正在使用Opencart,我在模型文件中有这些功能,基本上是相同的。有没有更好的方法呢?保持重复代码行似乎是浪费,但我不确定处理这个问题的正确方法是什么。我能以某种方式结合这些陈述吗?这是一种正确的方法吗?我的PHP技能不是很好,这里的一些建议将不胜感激。这是函数
public function getSum() {
$query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 12 MONTH) ");
return $query->row;
}
public function lastThirty() {
$query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 1 MONTH)" );
return $query->row;
}
public function lastYearNow() {
$query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 12 MONTH) ");
return $query->row; //will be giving this time last year, not figured out yet.
}
public function lastYearTotal() {
$query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 1 MONTH)" );
return $query->row; //will be total for last last year, not figured out yet.
}
答案 0 :(得分:1)
您可以将重复的代码提取到方法中,并仅将月数(如果这是唯一的差异)作为参数。但是为了冗长,我会保留所有其他方法。
答案 1 :(得分:1)
您可以使用单个函数而不是四个函数,并使用参数作为动态值,即月份。所以你的方法看起来像这样:
public function getSum($month = 12) {
$query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL " . $month . " MONTH) ");
return $query->row;
}
在调用此方法时,您可以将所需的结果传递给月份,否则它将显示12个月的结果。希望这会对你有所帮助。
注意:建议保留所有这些方法,因为这些方法包含少量代码,并且在功能上您可能需要使用不同的方法来执行不同的操作。