2014-11-16 3 views
-1

Этот код из моего проекта Kohana. Как сделать его более красивым? Должен ли я использовать try-catch вместо этого? Как не писать exit() два раза?Что лучше всего написать такой PHP-код

public function action_index() 
{ 
    $id = $this->request->query('id'); 
    if (!empty($id)) { 
     $ticket = ORM::factory('ticket') 
      ->where('id', '=', $id) 
      ->find(); 
     if (!empty($ticket)) { 
      $event = ORM::factory('event') 
       ->where('id', '=', $ticket->event_id) 
       ->find(); 
      if (!empty($event)) { 
       $this->template->ticket = $ticket->id; 
       $this->template->name = $ticket->name; 
       $this->template->event = $event->title; 
      } else { 
       exit(); 
      } 
     } else { 
      exit(); 
     } 
    } 
} 
+3

Возможно, вы захотите попросить об этом на [codereview.se]. –

ответ

1

код становится более удобным для чтения (ИМХО) в этом стиле:

public function action_index() 
{ 
    $id = $this->request->query('id'); 
    if (empty($id)) { 
     return; //or exit() if you really need it 
    } 

    $ticket = ORM::factory('ticket') 
     ->where('id', '=', $id) 
     ->find(); 
    if (empty($ticket)) { 
     return; //or exit() if you really need it 
    } 

    $event = ORM::factory('event') 
     ->where('id', '=', $ticket->event_id) 
     ->find(); 
    if (empty($event)) { 
     return; //or exit() if you really need it 
    } 

    $this->template->ticket = $ticket->id; 
    $this->template->name = $ticket->name; 
    $this->template->event = $event->title; 
} 
+0

Спасибо! Вот это! – dearmisterrobot

1

Я обычно не использовать один-вкладыш формы, если заявления, но в данном случае я думаю, что они помогают читаемость а, много.

public function action_index(){ 
    $id = $this->request->query('id'); 

    if (empty($id)) return; 

    $ticket = ORM::factory('ticket') 
     ->where('id', '=', $id) 
     ->find(); 

    if (empty($ticket)) exit(); 

    $event = ORM::factory('event') 
     ->where('id', '=', $ticket->event_id) 
     ->find(); 

    if (empty($event)) exit(); 

    $this->template->ticket = $ticket->id; 
    $this->template->name = $ticket->name; 
    $this->template->event = $event->title;  
} 
Смежные вопросы