2017-07-12 8 views
0

私は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. 
    } 
+1

私はこれをしません。これらは小さなメソッドです。コピーされるコードは大量ではありません。将来的にそれらを微調整する必要があるかもしれません(例えば、getSum()は特定のトランザクションを除外する必要があります)、それらを組み合わせた場合は苦痛になります。 –

+0

ありがとうございました!私はいつも長い道のりをとっているように見えますが、時にはわからないショートカットがあります。 –

+0

これらの関数に* logic *がある場合は、確かに[dry up](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)と書いてありますが、これらはほんの些細な機能です。 –

答えて

1

4つではなく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月のために結果が表示されます。これがあなたを助けることを願っています。

注:これらのメソッドには少量のコードしか含まれていないことをお勧めします。異なる機能を実行するには、異なるメソッドが必要な場合があります。

1

重複したコードをメソッドに抽出し、引数として月の数だけ(これが唯一の相違点である場合)を与えることができます。しかし、私は冗長さのために他の方法をすべて保持していました。

関連する問題