编写这样的PHP代码的最佳实践是什么

编写这样的PHP代码的最佳实践是什么,php,Php,这段代码来自我的Kohana项目。如何让它更漂亮? 我应该改用try-catch吗?如何不写两次exit() public function action_index() { $id = $this->request->query('id'); if (!empty($id)) { $ticket = ORM::factory('ticket') ->where('id', '=', $id) -&

这段代码来自我的Kohana项目。如何让它更漂亮? 我应该改用try-catch吗?如何不写两次exit()

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();
        }
    }
}

这种风格的代码更具可读性(IMHO):

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;
}

我通常不使用if语句的单行形式,但在这种情况下,我认为它们对可读性有很大帮助

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;     
}

你可以试着问一下这个。