2016-04-17 12 views
1

連絡先情報をデータベースに保存するメソッドがあります。このメソッドでは、正常に保存された場合はtrueを返し、そうでない場合はfalseを返します。try catchブロックを使用しています。例外をスローする代わりにfalseを返すことはできますか?このように動作しますが、私はそれが大学の授業のための良い練習であると思っています。おかげで私のcontact_functions.phpページで例外をスローするのではなくtryとcatchからfalseを返すことができます

function saveContactInfo($firstName, $lastName, $email, $subject, $message, $pdoConnection){ 
    //Get timestamp of current time and store it into a variable 
    //This is so we can keep a record of the time a message was sent. 
    $messageTime = time(); 

    try{ 
     $query ="INSERT INTO contact_info (firstName, lastName, email, subject, message, messageTime) VALUES (:firstName, :lastName, :email, :subject, :message, :messageTime)"; 
     $statement = $pdoConnection->prepare($query); 
     //bind our values. they will all be srting parameters. 
     $statement->bindValue(':firstName', $firstName, PDO::PARAM_STR); 
     $statement->bindValue(':lastName', $lastName, PDO::PARAM_STR); 
     $statement->bindValue(':email', $email, PDO::PARAM_STR); 
     $statement->bindValue(':subject', $subject, PDO::PARAM_STR); 
     $statement->bindValue(':message', $message, PDO::PARAM_STR); 
     $statement->bindValue(':messageTime', $messageTime, PDO::PARAM_STR); 
     $statement->execute(); 
     return true; 
    }catch(PDOException $e){ 
     //throw new pdoDbException($e); 
     //return "Error message " . $e->getMessage(); 
     return false; 
    } 
} 

はその後、私のcontact_handler.phpにページ:関数/メソッドが従うに失敗したときに

if (saveContactInfo($firstName, $lastName, $email, $subject, $message, $pdoConnection)) { 
     echo 'Your Message has been sent!!';  
    } else { 
     echo 'There was a problem with your message!!'; 
    } 
+1

あなたが私に尋ねると味の問題ですが、これは間違いありません。 「解決策に問題がありました。」という一般的なエラーよりも、ユーザーにエラーに関する具体的なフィードバックを与えることは、常に良い習慣です。 – vaultboy

+1

特定のフィードバックは管理者と開発者にとって、ユーザーは一般的な説明以外のエラーについては何も知らないはずです。だから、あなたが望むものを返すことができます。 –

+0

素晴らしい点。ありがとうたくさんありがとう – Sarah

答えて

2

例外がスローされなければなりませんそれは自然な振る舞いです。

この場合、関数は挿入が成功したか失敗したかを示すステータスを返します。そのため、あなたが行ったように、その関数内でのデータベース操作に関連する例外を処理することは理にかなっています。

一方、データをフェッチしていて、関数がそのデータを返すと仮定した場合、「何か異なる」を返す代わりに、失敗した場合に例外をスローするのは正しいでしょう。

とにかく、例外をスローすると、最終的にそれを処理する必要があります。

+0

。これは私に役立ちます:) – Sarah

1

コードをさらに進めることができない場合は、例外をスローする必要があります。真と偽を返すことはコードユーザにフィードバックです。あなたが例外を得るときにfalseを返すことを望むなら、それは完全にあなたの選択と完全に可能です。

+0

あなたのアドバイスに感謝:) – Sarah

関連する問題