刚刚学习了三元运算符,并期望以下内容起作用:
$dbh =new PDO('mysql:blad','user','pass');
(!$dbh) ? throw new Exception('Error connecting to database'); : return $dbh;
相反,我得到了以下错误:
parse error: syntax error, unexpected T_THROW in...
对正确的语法有什么想法吗?
感谢
三元运算符的语法为expr1 ? expr2 : expr3
。简洁地说,一个表达式是"任何有价值的东西"。
对于PHP8之前的PHP版本,throw …
和return …
不是表达式,而是语句。这意味着它们不能用作三元运算的操作数。
在PHP8中,throw ...
是一个表达式,因此可以用作三元运算的操作数,而return ...
仍然是一个语句。
在任何情况下,如果构造函数中存在问题,PDO类都会抛出自己的异常。正确的(意思是,未损坏)语法如下:
try {
$dbh = new PDO('mysql:blad','user','pass');
return $dbh;
} catch (PDOException $e) {
throw new Exception('Error connecting to database');
}
可能不使用分号,因为完整中的三元运算符被视为一个必须以分号结尾的命令:
(!$dbh) ? throw new Exception('Error connecting to database') : return $dbh;
所以不要在以下两者之间的某个位置结束命令:)