组合模型函数的正确方法
Proper way to combine model functions
我正在使用 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.
}
您可以将重复的代码提取到一个方法中,并只给出月数(如果这是唯一的区别)作为参数。但是,为了冗长,我会保留所有其他方法。
您可以使用一个函数而不是四个函数,并使用一个参数作为动态值,即月份。所以你的方法看起来像这样:
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 个月的结果。希望对您有所帮助。
注意:建议保留所有这些方法,因为它们包含少量代码,并且在功能上您可能需要不同的方法来执行不同的操作。
我正在使用 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.
}
您可以将重复的代码提取到一个方法中,并只给出月数(如果这是唯一的区别)作为参数。但是,为了冗长,我会保留所有其他方法。
您可以使用一个函数而不是四个函数,并使用一个参数作为动态值,即月份。所以你的方法看起来像这样:
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 个月的结果。希望对您有所帮助。
注意:建议保留所有这些方法,因为它们包含少量代码,并且在功能上您可能需要不同的方法来执行不同的操作。