Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/06/2014, 05:55
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Optimizar función: condicionales

Código PHP:
Ver original
  1. if($this->_page - 4 > 0)
equivale a

Código PHP:
Ver original
  1. if($this->_page > 4)

Ademas... como se vuelve tan ilegible te aconsejaria algo que nunca hago: crea un alias de $this->_page a $page o $pg

Código PHP:
Ver original
  1. if($p > 4)

Tu problema principal es que no se entiende nada!

Ahora repite lo anterior 1.000.000 de veces y el codigo se vera achicado bastante:

Código PHP:
Ver original
  1. function getPages() {
  2.         if(!$this->_pagination_enabled) return "";
  3.         if($this->_table_total_rows > 0 && $this->_table_total_rows > $this->_limit) {
  4.              
  5.             $tot_p = ceil($this->_table_total_rows / $this->_limit);
  6.            
  7.             // alias
  8.             $p = $this->_page;
  9.             $q = $this->_search_query;
  10.             $s = $this->_source;
  11.             $id = $this->_id;
  12.            
  13.            
  14.             $out= '<ul class="pagination pull-right" style="margin: 0px;">';
  15.             if($p != 1) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="1">&laquo;</a></li>';
  16.             //      <li><a href="#">3</a></li>
  17.             if($tot_p <= 5) {
  18.                 for($i = 1; $i < 6; $i++) {
  19.                     $cl = "";
  20.                     if($i == $p) $cl = "class='active'";
  21.                     $out.= '<li '.$cl.'><a href="#" class="datatable_reload" data-id="'.$id.'"  data-source="'.$s.'" data-search="'.$q.'" data-page="'.$i.'">'.$i.'</a></li>';
  22.                 }
  23.             }
  24.             else {
  25.                 if($p    > 2 && $p < ($tot_p - 2)) {
  26.                     $out.= '<li><a href="#" class="datatable_reload" data-source="'.$s.'" data-id="'.$id.'" data-search="'.$q.'" data-page="'.($p - 2).'">'.($p - 2).'</a></li>';    
  27.                     $out.= '<li><a href="#" class="datatable_reload" data-source="'.$s.'" data-id="'.$id.'" data-search="'.$q.'" data-page="'.($p - 1).'">'.($p - 1).'</a></li>';
  28.                     $out.= '<li class="active" ><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p).'">'.($p).'</a></li>';
  29.                     $out.= '<li><a href="#" class="datatable_reload" data-source="'.$s.'" data-id="'.$id.'" data-search="'.$q.'" data-page="'.($p + 1).'">'.($p + 1).'</a></li>';    
  30.                     $out.= '<li><a href="#" class="datatable_reload" data-source="'.$s.'" data-id="'.$id.'" data-search="'.$q.'" data-page="'.($p + 2).'">'.($p + 2).'</a></li>';
  31.                 }
  32.                  
  33.                 else if($p == 1) {
  34.                     $out.= '<li class="active"><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p).'">'.($p).'</a></li>';
  35.                     if($p + 1 <= $tot_p) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p + 1).'">'.($p + 1).'</a></li>';    
  36.                     if($p + 2 <= $tot_p) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p + 2).'">'.($p + 2).'</a></li>';
  37.                     if($p + 3 <= $tot_p) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p + 3).'">'.($p + 3).'</a></li>';    
  38.                     if($p + 4 <= $tot_p) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p + 4).'">'.($p + 4).'</a></li>';
  39.                 }
  40.                  
  41.                 else if($p == $tot_p) {
  42.                      
  43.                     if($p - 4 > 0) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p - 4).'">'.($p - 4).'</a></li>';    
  44.                     if($p - 3 > 0) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p - 3).'">'.($p - 3).'</a></li>';
  45.                     if($p - 2 > 0) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p - 2).'">'.($p - 2).'</a></li>';    
  46.                     if($p - 1 > 0) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p - 1).'">'.($p - 1).'</a></li>';
  47.                     $out.= '<li class="active" ><a href="#" class="datatable_reload" data-source="'.$s.'" data-id="'.$id.'" data-search="'.$q.'" data-page="'.($p).'">'.($p).'</a></li>';
  48.                 }
  49.                  
  50.                 else if($p == 2) {
  51.                     $out.= '<li><a href="#" class="datatable_reload" data-source="'.$s.'" data-id="'.$id.'" data-search="'.$q.'" data-page="'.($p - 1).'">'.($p - 1).'</a></li>';
  52.                     $out.= '<li class="active"><a href="#"  class="datatable_reload" data-source="'.$s.'" data-id="'.$id.'" data-search="'.$q.'" data-page="'.($p).'">'.($p).'</a></li>';
  53.                     if($p + 1 <= $tot_p) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p + 1).'">'.($p + 1).'</a></li>';    
  54.                     if($p + 2 <= $tot_p) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p + 2).'">'.($p + 2).'</a></li>';
  55.                     if($p + 3 <= $tot_p) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p + 3).'">'.($p + 3).'</a></li>';    
  56.                      
  57.                 }
  58.                 else if($p == ($tot_p - 1)) {
  59.                     if($p - 3 > 0) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p - 3).'">'.($p - 3).'</a></li>';
  60.                     if($p - 2 > 0) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p - 2).'">'.($p - 2).'</a></li>';    
  61.                     if($p - 1 > 0) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p - 1).'">'.($p - 1).'</a></li>';
  62.                     $out.= '<li class="active"><a href="#"  class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p).'">'.($p).'</a></li>';
  63.                     if($p + 1 <= $tot_p) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.($p + 1).'">'.($p + 1).'</a></li>';    
  64.                      
  65.                 }
  66.             }
  67.              
  68.              
  69.              
  70.              
  71.             if($p != $tot_p) $out.= '<li><a href="#" class="datatable_reload" data-id="'.$id.'" data-source="'.$s.'" data-search="'.$q.'" data-page="'.$tot_p.'">&raquo;</a></li>';
  72.             $out.= '</ul>';    
  73.              
  74.             return $paginator;
  75.         }
  76.         else return "";
  77.          
  78.          
  79.     }


- Ahora que es mas "legible" ... refactoriza

- Por ultimo.. tienes a la vista muchisimo HTML generado in situ cuando podrias buscar otra forma que la concatenacion por ejemplo el patron Decorator
__________________
Salu2!

Última edición por Italico76; 05/06/2014 a las 06:06