[英]Ternary operator syntax (PHP)
刚刚学习了三元运算符,并希望以下内容起作用:
$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
expr1 ? expr2 : expr3
。 一个表达,简而言之,就是“任何有价值的东西” 。
对于 PHP 8 之前的 PHP 版本, throw …
和return …
不是表达式,它们是语句。 这意味着它们不能用作三元运算的操作数。
从 PHP 8 开始, 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;
所以不要在中间的某个地方结束命令:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.