2012-01-12 58 views
4

剛被學習速記三元運算符,並期待着以下工作:速記三元運算符的語法(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... 

任何想法正確的語法?

謝謝

+5

請......對於所有那些很好的編程練習的愛,不要將你的算法的關鍵部分加快。閱讀這條道路,將需要更多的思考來弄清楚你在做什麼。 https://gist.github.com/00ca02f7c86f6aac2e52 – SamT 2012-01-12 11:41:19

+2

三元論的要點是「如果某物然後分配一些值,否則分配一些其他值」的簡寫。如果你想在兩個任意語句之間做一個if/else,那麼就使用一個適當的if else。 – Quentin 2012-01-12 11:41:37

回答

10

三元運算符的語法是expr1 ? expr2 : expr3。簡明扼要地表述爲"anything that has a value"

throw…;return…;表情,他們是聲明


在任何情況下,如果構造函數中存在問題,PDO類將拋出自己的異常。正確的(意思是非破壞的)語法就像:

try { 
    $dbh = new PDO('mysql:blad','user','pass'); 
    return $dbh; 
} catch (PDOException $e) { 
    throw new Exception('Error connecting to database'); 
} 
-1

也許withouth的分號,因爲在完全三元運算符被視爲一個命令,你必須以分號結束:

(!$dbh) ? throw new Exception('Error connecting to database') : return $dbh; 

所以不要某處結束命令其間: )

+1

沒有,即使沒有分號,這也不起作用 – rix 2012-01-12 11:57:31

+0

感謝大家的輸入,只是想確保它不是語法問題。 – rix 2012-01-12 12:05:38

+0

哦,好的,謝謝 – tim 2012-01-12 12:06:53