2016-11-01 10 views
0

私は、いくつかの異なるテーブルからデータを取り出し、カレンダー/アジェンダ用に出力できる配列にまとめます。私の主な問題は、新しいアイテムがカレンダーに配置されるように要求された場合、この方法は大きくて大きなモンスターに成長するということです。私はすでにこれを小さくするためにリファクタリングを少し追加しましたが、それは大きすぎます。配列を構築するための動的な方法がありますので、各キー/要素を指定する必要はありませんか?

質問:私の配列を構築するより良い方法はありますか、それを将来的にはきれいにする/容易にするオブジェクトでもありますか?このメソッドをよりよくリファクタリングするために直接使用できるブログや記事がありますか? https://github.com/scci/security-employee-tracker/blob/master/app/Handlers/Calendar/Calendar.php

答えて

0

あなたが好きな何かができる:フルCalendarクラスは、ここで見つけることができ

private function generateCalendarItems() 
{ 
    //Let's build that calendar. 
    $date = $this->start; 
    $i = 0; 
    $separatedList = $this->separatedList(); 
    $travelList = $this->travelsList(); 
    $trainingUsersList = $this->trainingUsersList(); 
    $newUserList = $this->newUserList(); 

    while ($date <= $this->end) { 
     $currentDate = $date->format('Y-m-d'); 
     $separatedArray = $this->pushToArray($separatedList, ['destroyed_date'], $currentDate); 
     $travelsArray = $this->pushToArray($travelList, ['leave_date', 'return_date'], $currentDate); 
     $trainingUsersArray = $this->pushToArray($trainingUsersList, ['due_date'], $currentDate); 
     $newUserArray = $this->pushToArray($newUserList, ['created_at'], $currentDate); 
     $trainingUsersArray = $this->groupUsersForTraining($trainingUsersArray); 

     if ((!empty($separatedArray) || !empty($travelsArray) || !empty($trainingUsersArray) || !empty($newUserArray)) || $currentDate == Carbon::today()->format('Y-m-d')) { 
      $this->calendarArray[$i]['date'] = $currentDate; 
      $this->calendarArray[$i]['separated'] = $separatedArray; 
      $this->calendarArray[$i]['travel'] = $travelsArray; 
      $this->calendarArray[$i]['trainingUser'] = $trainingUsersArray; 
      $this->calendarArray[$i]['newUser'] = $newUserArray; 
     } 
     $date->addDay(); 
     $i++; 
    } 
} 

$this->calendarArray[$i] = array('data' => $currentDate, ...., 'newUser' => $newUserArray); 

は本当に離れにそれらのキー/値のそれぞれをリストから取得できません配列を作成しますが、少なくともこれにより、$this->calendarArrayを繰り返し書き出す必要がなくなります。

関連する問題