2016-04-07 19 views
0

私はシステムを構築しましたが、今は整理しています。私はCodeigniter MVCフレームワークとPHP Stormを使って、私は私の見解では膨大な数の数学を持っています。下記をご覧ください。初心者のためのリファクタリング

foreach ($records as $row) : 

      $join_date = $row->start_date; 
      $date1 = new DateTime('now'); 
      $date2 = new DateTime($join_date); 

      $p = $row->start_amount; 
      $i = $row->interest; 
      $c = 12; // compound frequency set to monthly 
      $n = ((int)$date1->diff($date2)->format("%m"))/12; 
      $r = $row->monthly_deposits; 
      $x = $i/$c; 
      $y = pow((1 + $x), ($n * $c)); 
      $Total_balance = $p * $y + ($r * (1 + $x) * ($y - 1)/$x); 

      $remain = 365 - $date1->diff($date2)->format("%a days"); 

      $Total_Deposits = ($row->monthly_deposits * (int)$date1->diff($date2)->format("%m")) + $row->start_amount; 
      $Total_Int = $Total_balance - $Total_Deposits; 

      $originalDate = $row->start_date; 
      $newDate = date("jS \of F Y", strtotime($originalDate)); 

      // Add field values to get row total 
      $rowTotal = $Total_balance; 

      // Add row total to grand total 
      $grandTotal += $rowTotal; 
      ?> 

私はコード内の変数を呼び出すことができ、ループ内にある必要があります。

これを行うにはどうすればいいですか?ループ内にthis>model>modelnameのような数式をモデルに入れて表示しますか?

コードはうまく動作し、整理しておくのが最善の方法です。

+2

なぜコードをモデルの関数に直接入れるのではなく、その関数をコントローラで呼び出し、返されたデータを直接ビューに送ります。ビューには、その中にあまりビジネスロジックが存在してはいけません。 – Keeleon

+0

ああ私が考えていたラインに沿ってthats、ありがとう。私は – Beep

+0

とモデルにリファクタリングを試してみます。 – cartalot

答えて

0

ビューは、基本的にコントローラで計算した内容を表示することを基本としています。これを原則としてください(必要であれば、モデルやビューで何も計算することができないわけではありません)。

モデル

class Random_model extends CI_Model { 
    function get_records() { 
     // access the database and return the rows you need 
    } 
} 

コントローラ

function whatever() { 
    $data = array(
     'first_result' => '', 
     'second_result' => '' 
    ); 

    $this->load->model('random_model'); 
    $records = $this->random_model->get_records(); 
    foreach ($records as $row) { 
     // do here the huge chunk of math and 
     // put in $data the results you need to display 
    } 
    $this->load->view('myview', $data) 
} 

ビュー

きれいで、意味のあるコードを維持するために、私は次のことを行うだろう

<div> <?php echo $first_result; ?> </div> 
<div> <?php echo $second_result; ?> </div>