Foros del Web » Programando para Internet » PHP »

aclaración operador !!

Estas en el tema de aclaración operador !! en el foro de PHP en Foros del Web. Buenas , estoy leyendo un libro (que por cierto recomiendo a todos) llamado CakePhp Application Development (me lo baje de una web que no recuerdo ...
  #1 (permalink)  
Antiguo 22/08/2009, 04:40
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
aclaración operador !!

Buenas , estoy leyendo un libro (que por cierto recomiendo a todos) llamado CakePhp Application Development (me lo baje de una web que no recuerdo la url donde el autor consentía la descarga).
El tema es que por primera vez me he topado con este operador ! repetido dos veces, ya que sabemos que ! una sola vez es negación pero dos??, alguien me puede aclarar un poco el tema.
Pego un ejemplo del libro:
Código:
if (!! $this->Book->save($this->data)) {
//hacer lo q sea
}
como aportación para los que no lo sepáis aún existe un curso gratuito (sobre Cake-Php) elaborado por el maestro Jesús Conde que podéis seguir gratuitamente desde esta url:
http://illasaron.com/upload/video/7e...aci%C3%B3n

Gracias por la ayuda
  #2 (permalink)  
Antiguo 22/08/2009, 04:59
 
Fecha de Ingreso: diciembre-2008
Mensajes: 118
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: aclaración operador !!

Pues lo desconocía, no ha podido ser un fallo?
  #3 (permalink)  
Antiguo 22/08/2009, 05:02
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: aclaración operador !!

Cita:
Iniciado por Kristt Ver Mensaje
Pues lo desconocía, no ha podido ser un fallo?
Hola, lo primero que yo pense fué lo mismo que tu ¿será una errata? , pero no lo creo porque en el libro se repite en muchas ocasiones y además no puede ser que sea negación porque de ser así no funcionaría el controlador de Cake; he llegado a pensar que se trate de una afirmación negando la negación ¿que ganas de complicarse la vida verdad?, por eso me extraña mucho y seguro que alguien nos puede dar una explicación.

Un saludo
  #4 (permalink)  
Antiguo 22/08/2009, 06:14
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: aclaración operador !!

en javascript el !!(Double negation) le hace un casting a un string o int y lo pasa a boolean.
por la linea que mostras esta haciendo lo mismo, seguramente save() devuelve el id del registro y si es un número distinto de 0 es true, si es 0 o null es false.
  #5 (permalink)  
Antiguo 22/08/2009, 06:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: aclaración operador !!

Te sugiero leer este articulo que te da ejemplos de lo que se puede hacer y al final de la pagina uno de los usuarios comenta e indica bastante similar lo que te indica masterpuppet http://tobielangel.com/2006/8/10/jav...egation-trick/

Ahora la pregunta que me surge es si los ejemplos que te da el libro son en javascript o en PHP sobre el !!
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 22/08/2009, 06:33
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: aclaración operador !!

Cita:
Iniciado por masterpuppet Ver Mensaje
en javascript el !!(Double negation) le hace un casting a un string o int y lo pasa a boolean.
por la linea que mostras esta haciendo lo mismo, seguramente save() devuelve el id del registro y si es un número distinto de 0 es true, si es 0 o null es false.
Ok , gracias , pero no entiendo porque hace eso sinceramente , ya que el método save() lo que hace es guardar unos datos en la Bd y que yo sepa no devuelve nada salvo true o false si se consigue guardar correctamente o no.

Un saludo y gracias
  #7 (permalink)  
Antiguo 22/08/2009, 06:34
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: aclaración operador !!

Cita:
Iniciado por abimaelrc Ver Mensaje
Ahora la pregunta que me surge es si los ejemplos que te da el libro son en javascript o en PHP sobre el !!
Hola , lógicamente son PHP pero no puro y duro sino Cake-Php que es un framerok PHP.
Un saludo
  #8 (permalink)  
Antiguo 22/08/2009, 06:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: aclaración operador !!

Si verificas el ejemplo que te di, vas a ver como implementar el !!, o para que es útil. En PHP probe de diferentes formas y hace lo mismo. Es útil para retornar boolean sin tener la necesidad de saber lo que hayas enviado. Solo quieres saber si es cierto o falso.

Si es cierto lo que indicas de que save() te trae un caracter de cierto o falso entonces no necesitas declarar !! Me imagino que lo usan para asegurarse de que indique si es cierto o falso.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 22/08/2009, 08:13
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: aclaración operador !!

Cita:
Iniciado por Dundee Ver Mensaje
Ok , gracias , pero no entiendo porque hace eso sinceramente , ya que el método save() lo que hace es guardar unos datos en la Bd y que yo sepa no devuelve nada salvo true o false si se consigue guardar correctamente o no.

Un saludo y gracias
según la documentación de cake save devuelve:
@return mixed On success Model::$data if its not empty or true, false on failure

como es mixed lo que hacen con el !! es hacerle un casting a Model::$data si este no esta vacio.
salu2.
  #10 (permalink)  
Antiguo 22/08/2009, 09:53
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: aclaración operador !!

Cita:
Iniciado por masterpuppet Ver Mensaje
como es mixed lo que hacen con el !! es hacerle un casting a Model::$data si este no esta vacio.
salu2.
Gracias por las respuestas pero no se que significa mixed ni casting , ¿mixed es un tipo de dato?, ¿casting que es?.
Gracias y un saludo
  #11 (permalink)  
Antiguo 22/08/2009, 11:29
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: aclaración operador !!

mixed,
casting
salu2.
  #12 (permalink)  
Antiguo 22/08/2009, 13:32
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
De acuerdo Respuesta: aclaración operador !!

Cita:
Iniciado por masterpuppet Ver Mensaje
mixed,
casting
salu2.
Mil gracias , haber si me entero de eso.

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:23.