Ver Mensaje Individual
  #20 (permalink)  
Antiguo 21/05/2014, 16:08
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: array_map() no detecta 2º parametro como array

Cita:
Iniciado por guardarmicorreo Ver Mensaje
El motivo es lograr un código fácil de leer, limpio, esto entiendo que implica evitar loops si tengo funciones nativas disponibles que en este caso pueden sustituir un foreach por ejemplo.
Que es mas legible ??
Código PHP:
Ver original
  1. foreach(self::search("ALL") as $msg_number){$headers[]=\imap_headerinfo($this->imap_stream, $msg_number);}
  2. return $headers;
  3.  
  4. return array_map(function($msg) { return imap_header($this->imap_stream, $msg); }, imap_search($this->imap_stream, 'ALL'));

Código PHP:
Ver original
  1. foreach(self::search("ALL") as $msg_number)
  2. {
  3.     $headers[] = \imap_headerinfo($this->imap_stream, $msg_number);
  4. }
  5. return $headers;
  6.  
  7. return array_map(
  8.     function($msg) {
  9.         return imap_header($this->imap_stream, $msg);
  10.     },
  11.     imap_search($this->imap_stream, 'ALL')
  12. );

El que tengas tu código en una linea no siempre significa que el código es limpio y legible. Solo es compacto.
De todas formas este tipo de cosas ya es preferencia de cada quien.

En cuanto a que solución usar pues te lo pongo de esta forma ¿Crees que se buena idea usar array_map solo para iterar ? en tu caso el foreach y el array_map estan haciendo lo mismo.

Para terminar si quieres escribir código mas legible hay dos principios que debes de tomar en cuenta:
  • El código debe ser sencillo de entender
  • El código debe de ser escrito para reducir el tiempo que le tomaria a una persona comprenderlo
Las ideas las tome prestadas del libro: The Art of Readable Code que seria buena idea te tomaras un tiempo para leer.
Tambien puedes leer la convención PSR-1 y PSR-2 las cuales aclaro, no estoy siguiendo en mis ejemplos.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.