\\”do something OR DIE()\\” 如何在 PHP 中工作?
•浏览 1
How does "do something OR DIE()" work in PHP?
我正在编写一个 php 应用程序来访问 MySQL 数据库,在教程中,它说的形式是
mysql_connect($host, $user, $pass) or die("could not connect");
$x = 5;
true or $x++;
echo $x; // 5
false or $x++;
echo $x; // 6
$con=mysql_connect($host, $user, $pass)
if(!$con)
{
die("could not connect");
}
else
{
echo"Connected";
}
PHP 是如何知道函数失败以便运行 die 部分的?我想我在问它的??"或"部分是如何工作的。我不认为我以前见过它。
如果第一条语句返回true,那么整个语句必须是true,因此第二部分永远不会执行。
例如:
mysql_connect($host, $user, $pass) or die("could not connect");
$x = 5;
true or $x++;
echo $x; // 5
false or $x++;
echo $x; // 6
$con=mysql_connect($host, $user, $pass)
if(!$con)
{
die("could not connect");
}
else
{
echo"Connected";
}
因此,如果您的查询不成功,它将评估 die() 语句并结束脚本。
PHP 的 or 像 C 的 || 一样工作(顺便说一下,PHP 也支持它 - or 看起来更好,并且具有不同的运算符优先级 - 请参阅此页面)。
它被称为短路运算符,因为一旦它有足够的信息来决定最终值,它将跳过任何评估。
在您的示例中,如果 mysql_connect() 返回 TRUE,则 PHP 已经知道无论 die() 评估为什么,整个语句都将评估为 TRUE,因此不会评估 die()。
如果 mysql_connect() 返回 FALSE,PHP 不知道整个语句将评估为 TRUE 还是 FALSE,因此它会继续并尝试评估 die() - 结束进程中的脚本。
这只是一个利用 or 工作方式的好技巧。
它像其他人描述的那样工作。
在 PHP 中,不要使用"die",因为它不会引发异常(就像在 Perl 中那样)。而是以正常方式正确抛出异常。
die 不能在 PHP 中被捕获,并且不记录 - 相反,它不优雅地打印消息并立即退出脚本,而不告诉任何人任何事情或给你任何机会记录事件,重试等。
mysql_connect($host, $user, $pass) or die("could not connect");
$x = 5;
true or $x++;
echo $x; // 5
false or $x++;
echo $x; // 6
$con=mysql_connect($host, $user, $pass)
if(!$con)
{
die("could not connect");
}
else
{
echo"Connected";
}