Estoy escribiendo una aplicación php para acceder a una base de datos MySQL, y en un tutorial, dice algo de la forma
mysql_connect($host, $user, $pass) or die("could not connect");¿Cómo sabe PHP que la función falló para ejecutar la parte del troquel? Supongo que estoy preguntando cómo funciona la parte "o". No creo que lo haya visto antes.
                    
                        php
                                mysql
                                exception-handling
                                conditional
                                
                    
                    
                        chustar
fuente
                
                fuente

Respuestas:
Si la primera declaración regresa
true, entonces la declaración completa debe ser,truepor lo tanto, la segunda parte nunca se ejecuta.Por ejemplo:
Por lo tanto, si su consulta no tiene éxito, evaluará la
die()declaración y finalizará el script.fuente
withdeclaración de Python , cuando en realidad es solo una expresión booleana ... Creo que se debe tener especial cuidado al usar esta expresión si se espera que realice una limpieza en caso de errores. Por favor, corríjame si me equivoco, pero si lo hacefunc_call($file) or die();y la función falla, el archivo se deja abierto cuando los scripts mueren.oren situaciones en las queifpodría funcionar?PHP
orfunciona como C||(que, por cierto, también es compatible con PHP;orsimplemente se ve mejor y tiene una precedencia de operadores diferente; consulte esta página ).Se le conoce como operador de cortocircuito porque omitirá cualquier evaluación una vez que tenga suficiente información para decidir el valor final.
En su ejemplo, si
mysql_connect()devuelve TRUE, entonces PHP ya sabe que toda la declaración se evaluará como TRUE sin importar lo que sedie()evalúe y, pordie()lo tanto, no se evalúe.Si
mysql_connect()devuelve FALSE, PHP no sabe si toda la declaración se evaluará como VERDADERO o FALSO, por lo que continúa e intenta evaluardie(), terminando el script en el proceso.Es solo un buen truco que aprovecha la forma en que
orfunciona.fuente
Funciona como otros han descrito.
En PHP, no use "morir", ya que NO genera una excepción (como lo hace en Perl). En su lugar, lanza una excepción correctamente de la forma habitual.
die no se puede capturar en PHP y no se registra; en su lugar, imprime el mensaje sin gracia e inmediatamente sale del script sin decirle nada a nadie ni darle la oportunidad de grabar el evento, reintentar, etc.
fuente
fuente