Pergunta

Eu estou escrevendo um aplicativo PHP para acessar um banco de dados MySQL, e em um tutorial, ele diz algo da forma

mysql_connect($host, $user, $pass) or die("could not connect");

Como o PHP saber que a função falhou para que seja executada a parte die? Eu acho que eu estou perguntando como a parte "ou" de ele funciona. Eu não acho que eu já vi isso antes.

Foi útil?

Solução

Se os primeiros instrução retorna true, em seguida, toda a declaração deve ser true, portanto, a segunda parte nunca é executado.

Por exemplo:

$x = 5;
true or $x++;
echo $x;  // 5

false or $x++;
echo $x; // 6

Portanto, se sua consulta não for bem sucedida, ele irá avaliar a declaração die() e terminar o script.

Outras dicas

PHP de or funciona como de C || (que, aliás, também é suportado pelo PHP - or apenas parece mais agradável e tem diferentes precedência de operadores - ver desta página ).

É conhecido como um operador curto-circuito, porque ele vai pular quaisquer avaliações, uma vez que tem informações suficientes para decidir o valor final.

No seu exemplo, se mysql_connect() retorna TRUE, então o PHP já sabe que toda a declaração irá avaliar como TRUE não importa o que die() resulte em, e, portanto, die() não é avaliado.

Se mysql_connect() retorna FALSE, o PHP não sabe se toda a declaração irá avaliar como VERDADEIRO ou FALSO assim vai e tenta evalute die() -. Terminando o script no processo

É apenas um truque agradável que tira proveito do caminho or obras.

Ele funciona como outros já descritos.

Em PHP, não use "die", como ele não levanta uma exceção (como faz em Perl). Em vez lançar uma exceção adequadamente da maneira normal.

die não pode ser pego em PHP, e não registra -. Em vez disso, imprime a mensagem ungracefully e imediatamente encerra o script sem dizer nada a ninguém ou dar-lhe qualquer oportunidade de gravar o evento, repetir etc

$con=mysql_connect($host, $user, $pass)
if(!$con)
{
     die("could not connect");
}
else
{
     echo "Connected";
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top