2012-01-12 15 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... 

のための任意のアイデア正しい構文ですか?完全での三項演算子はあなたがセミコロンで終了する必要があります一つのコマンドとして見られているので、

はセミコロンwithouthおそらくあなた

+5

良いプログラミングの練習であることを忘れないでください。そのようなアルゴリズムの重要な部分をショートカットにしないでください。これを読んで、あなたがしていたことを理解するためにもっと考えてみましょう。 https://gist.github.com/00ca02f7c86f6aac2e52 – SamT

+2

三項の要点は、「何かがあれば何らかの値を割り当て、そうでなければ他の値を割り当てる」の略語です。 if/elseを任意の2つのステートメントの間で行うには、else ifを適切に使用します。 – Quentin

答えて

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

ありがとう:

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

はそうどこか中間にコマンドを終了DONT: )

+1

いいえ、セミコロンを使わなくても動作しません。 – rix

+0

入力してくれてありがとうございます。 – rix

+0

ありがとう、ありがとう – tim