2013-09-25 3 views
-5

У меня есть 5 или более методов в следующем порядке. я надеюсь помочь мне написать один метод или два, чтобы уменьшить код и повысить удобство использования моего кода:как повысить удобство использования этого кода?

public function index() { 
    $this -> load -> view('header'); 
    $this -> load -> view('navigation'); 
    $this -> load -> view('default_form'); 
    $this -> load -> view('footer'); 
} 

public function view_courses() { 
    $this -> load -> view('header'); 
    $this -> load -> view('navigation'); 
    $this -> load -> view('courses'); 
    $this -> load -> view('footer'); 
} 

public function view_classrooms() { 
    $this -> load -> view('header'); 
    $this -> load -> view('navigation'); 
    $this -> load -> view('classroom'); 
    $this -> load -> view('footer'); 
} 
+2

В чем проблема? – alexn

+0

Постарайтесь понять, чего вы действительно хотите достичь, подробно расскажите о своей потребности. – mathielo

+0

Посмотрите на следующее: http://stackoverflow.com/questions/9266827/creating-a-master-template-in-codeigniter – Styxxy

ответ

1

Есть несколько способов, вы могли бы пойти об этом, и какой из них имеет смысл (если таковые все) полностью зависит от личного мнения. (Мой PHP очень ржавый, и я никогда не использовал CodeIgniter, поэтому это может быть не синтаксически точным. Рассмотрим его демонстрацию псевдокода).

Один из подходов может заключаться в создании меньших «вспомогательных» функций, которые просто делегируют функциональность немного. Что-то вроде этого:

public function view_classrooms() { 
    $this -> view_header_and_navigation(); 
    $this -> load -> view('classroom'); 
    $this -> view_footer(); 
} 

private function view_header_and_navigation() { 
    $this -> load -> view('header'); 
    $this -> load -> view('navigation'); 
} 

private function view_footer() { 
    $this -> load -> view('footer'); 
} 

В то же время возвраты на это быстро уменьшаются. Это действительно подходит для реорганизации больших функциональных возможностей.

Другой подход может сделать одну общую функцию:

public function view_something($content) { 
    $this -> load -> view('header'); 
    $this -> load -> view('navigation'); 
    $this -> load -> view($content); 
    $this -> load -> view('footer'); 
} 

Конечно здесь компромисс является то, что вам нужно знать детали реализации при вызове функции, если только чуть-чуть. Для решения, которые вы можете создать делегат функции, чтобы пойти с ним:

public function view_courses() { 
    $this -> view_something('courses'); 
} 

Но, опять же, отдача может начать уменьшаться быстро.

В действительности нет ничего неправильно с подходом, который у вас есть в настоящее время. (Если это только небольшой пример, и проблема находится в гораздо большем масштабе.) Каждое представление явно построено из его частей. Конечно, эти части часто повторяются. Но помимо эстетики кода это представляет собой настоящую проблему? Является ли этот код часто меняющимся, что много повторной работы? Если это так, подумайте о повторной работе, когда решаете, как рефакторировать, а не только эстетику кода. Так как повторная работа - это проблема, которую нужно решить, а не код.

+0

Завершилось мое закрытое голосование. 1+ на удивительный ответ. Может быть, значок смены? XD –

Смежные вопросы