Ver Mensaje Individual
  #13 (permalink)  
Antiguo 10/10/2010, 23:11
RodrigoG
 
Fecha de Ingreso: diciembre-2009
Ubicación: dirname(__FILE__)
Mensajes: 149
Antigüedad: 14 años, 11 meses
Puntos: 11
Respuesta: [duda existencial] si tengo if($a && $b)... y $a es falso, ¿Se evalúa $b?

Cita:
Iniciado por abimaelrc Ver Mensaje
Puedes ingresar la función en una variable y luego llamar empty, ejemplo
Código PHP:
Ver original
  1. <?php
  2. function foo(){
  3.     return null;
  4. }
  5. if(is_null(foo())){
  6.     echo 'foo is null <br />';
  7. }
  8.  
  9. $foo = foo();
  10. if(empty($foo)){
  11.     echo 'foo se considera también empty <br />';
  12. }
Entiendo, pero en mi caso particular parece que eso se vuelve inviable... mira, copio mi función ek_objetos($instrucciones = null), que está dentro de mi clase BaseDatos.



Código PHP:
Ver original
  1. /**
  2.      * Éste método retorna una consulta a la base de datos como un arreglo de
  3.      * objetos. Cada posición del arreglo viene de una fila en la
  4.      * tabla de la base de datos, esto representado en forma de objeto. Cada
  5.      * parámetro de ése objeto viene de una columna de la tabla.
  6.      *
  7.      * ejemplo de uso:
  8.      * $resultado = array();
  9.      * $resultado = $bd->ek_objetos("SELEC * FROM usuarios");
  10.      * echo $resultado[0]->nombre;
  11.      * echo $resultado[0]->edad;
  12.      * etc.
  13.      *
  14.      * @return <object[]> un arreglo de objetos, producto de preguntar a la
  15.      * base de datos, o false en caso de error.
  16.      */
  17.     public function ek_objetos($instrucciones = null) {
  18.  
  19.         // Si es que no se le pasan parámetros (instrucciones a ejecutar en la
  20.         // base de datos), se hace lo sigueinte:
  21.         if (is_null($instrucciones)) {
  22.  
  23.             // En caso de que exista una respuesta previa, se retorna.
  24.             if (!is_null($this->respuesta)) {
  25.                 return $this->respuesta;
  26.  
  27.                 // Caso contrario se ejecutan las instrucciones que están
  28.                 // registradas. En caso de que haya un error (como que no existan
  29.                 // tales instrucciones), se retorna falso.
  30.             } elseif (!$this->agar_instrucciones()) {
  31.                 return false;
  32.             }
  33.  
  34.             // En el caso de que sí se hayan pasado parámetros:
  35.         } else {
  36.  
  37.             // Se registran.
  38.             $this->en_instrucciones($instrucciones);
  39.             // Y se ejecutan (para registrar respuesta). En caso de que exista
  40.             // error, se retorna falso.
  41.             if (!$this->agar_instrucciones()) {
  42.                 return false;
  43.             }
  44.         }
  45.  
  46.         // Variable desde la cual se retornará el arreglo de objetos.
  47.         $objetos = array();
  48.  
  49.         // Ciclo que en cada vuelta extrae una fila de la base de datos y la
  50.         // transforma en un objeto para luego asignarlo al arreglo $objetos.
  51.         while ($fila = mysql_fetch_object($this->respuesta)) {
  52.             $objetos[] = $fila;
  53.         }
  54.  
  55.         // retornar el arreglo de objetos.
  56.         return $objetos;
  57.     }

El método agar_instrucciones() era el ejecutar_instrucciones() (es lo mismo). Este método es el encargado de hacer la consulta mysql, por lo que lo trato de evitar lo más posible. En ese caso si es que hiciera is_null($this->agar_instrucciones()) significaría que tendría que evauarlo, aún cuando es innecesario.