кодекса - PullRequest
       21

кодекса

3 голосов
/ 30 августа 2011

я могу заменить

if(!$mail->Send()) {
    return false;
} else {
    return true;
}

с этим?

return (bool)$mail->Send();

независимо от того, что возвращает $ mail-> Send () (это сторонний объект)
есть ли тип, в котором (bool) действует не так, как восклицательный знак?

Ответы [ 5 ]

3 голосов
/ 30 августа 2011

Да, разрешено приведение типов к следующим типам:

Разрешены следующие типы:

  • (int), (integer) - приведение к целому числу
  • (bool), (булево) - приведение к булеву
  • (float), (double), (real) - приведение к плаванию
  • (строка) - приведение к строке
  • (массив) - приведение к массиву
  • (объект) - приведение к объекту
  • (не установлено) - приведение к NULL (PHP 5)

В противном случае также можно использовать

return !!$mail->Send();

однако, это не очень очевидно для кого-то, кто просматривает ваш код в будущем.

1 голос
/ 30 августа 2011

Да, ваша замена работает нормально ...

return (boolean)$mail->Send();

То, что если оператор написан очень странным образом, знак ! является логическим NOT и просто инвертирует boolон говорит ...

если $mail->Send() равно NOT true, вернуть false в противном случае вернуть true.

1 голос
/ 30 августа 2011

Вы можете упростить это как:

return $mail->Send() ? true : false;
1 голос
/ 30 августа 2011

Да, вы можете, и если он не работает, вы можете сделать это: return !!$mail->Send();.

0 голосов
/ 30 августа 2011

Пока тип возврата функции Send () имеет логический тип, вы можете использовать это:

return $mail->Send();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...