2013-02-14 2 views
1

Приносим извинения, если я что-то исповедую или использую неверный термин. Но я пытался выяснить, как использовать оператор if для объекта.Можете ли вы использовать оператор IF для объекта?

Это работает отлично, и, как я понимаю, @ подавляет ошибки.

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

Однако если я это сделать не удается:

if (@$mail->send('[email protected]', "$receiver_email", "$subject", "$message")) {} 

Ирония заключается в том, что электронная почта проходит, но в случае сбоя. Как я могу исправить оператор IF, чтобы он работал правильно?

+0

$ bla = $ mail-> send(); if ($ bla) {}? зависит от того, что возвращает метод send() ... – pebbo

ответ

0

Прежде всего, не используйте @. Это плохая практика и лучше справляться с использованием процедур обработки ошибок; Смотри также: Error logging, in a smooth way

Из кода я могу только предположить, что ваш код выглядит так:

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

Если функция не имеет возвращаемого значения, значение по умолчанию null и вычисляет false, которые почему IF «терпит неудачу».

Вы должны вернуть значение успеха из своего метода send().

0

Во-первых: старайтесь избегать @, это вообще плохая практика ..

Почему при сбое не зависит кастрированный баран отправки был успешным. Только если функция mail() в любом классе $mail фактически возвращает что-то (например, true или false), вы можете что-то сделать с этим.

Поскольку это не встроенный PHP-класс, вы должны попросить авторов вашего класса (или самостоятельно, если вы его написали), чтобы вернуть true при успехе.

Вкратце: это не то, что вы можете исправить, человек, который написал функцию send, может это исправить.

Смежные вопросы