1

何かを誤解したり、間違った用語を使用したりした場合は、お詫び申し上げます。しかし、私はオブジェクトでifステートメントを使用する方法を理解しようとしていました。

これは問題なく機能し、私が理解しているように、@はエラーを抑制します。

if (@mail("$receiver_email", "$subject", "$message", "$headers")) { }

ただし、これを行うと失敗します。

if (@$mail->send('email@gmail.com', "$receiver_email", "$subject", "$message")) {}

皮肉なことに、電子メールは通過しますが、IFは失敗します。正しく機能するようにIFステートメントを修正するにはどうすればよいですか?

4

2 に答える 2

0

まず第一に、を使用しないでください@。これは悪い習慣であり、エラー処理ルーチンを使用する方が適切です。参照:スムーズな方法でのエラーロギング

あなたのコードから私はあなたのコードがこのようであると推測することができるだけです:

public function send($from, $to, $subject, $message)
{
    // your code here
}

関数に戻り値がない場合、デフォルトでにnullなり、それが評価されfalseます。これがIFが「失敗」する理由です。

メソッドから成功値を返す必要がありますsend()

于 2013-02-14T00:46:42.213 に答える
0

まず、@を避けてください。これは一般的に悪い習慣です。

ifが失敗する理由は、送信が成功したかどうかに依存しません。mail()どのクラスの関数でも実際に何か(trueやfalseなど)を返す場合にのみ、$mailこれを使用して何かを実行できます。

これは組み込みのPHPクラスではないため、クラスの作成者(または、作成した場合は自分自身)に成功時にtrueを返すように依頼する必要があります。

つまり、これは修正できるものではなく、send関数を作成した人が修正できます。

于 2013-02-14T00:46:31.360 に答える