2009-07-11 6 views
3

関数の前に@を追加すると何が行われますか?これは、関数の内部で起こるかもしれないすべてのエラーを抑制し@ before関数なぜ

$connect = @mysql_connect('localhost', 'root', 'password'); 
instead of 
$connect = mysql_connect('localhost', 'root', 'password'); 

答えて

12

:私はいくつかのスクリプトで

例をこれを見てきました。 Documentation here

これは、いくつかの不正なバグにつながる可能性があるため、これはお勧めしません。

+3

私は誰かに私のポストを改善しても問題はありませんが、私が投稿した数分のうちにその文句を完全に変更するには最高の気分ではありません。 –

+0

それも遅いです。使用しないでください。ほとんど常に別の選択肢があります。 – moo

0

これは、PHPのドキュメントから、エラー制御演算子です:

PHPはエラー制御演算子をサポートしています。記号(@)で。 PHPの式の前に付けると、その式によって生成されるエラーメッセージは無視されます

あなたはそれがまだ呼び出されます、その後set_error_handler()でカスタムエラーハンドラ関数を設定しているが、エラーを引き起こした呼び出しが@が先行した時に0を返します。これは、このカスタムエラーハンドラが(とすべきである)error_reporting()を呼び出すことができる場合。

track_errors機能が有効な場合、式によって生成されたエラーメッセージは変数$php_errormsgに保存されます。この変数は各エラーで上書きされるため、使用したい場合は早めにチェックしてください。

関連する問題