PHP! Is_resource ($ RS) против ($ RS === false) против! $ RS

При проверке действительного ресурса в PHP мне интересно, являются ли они взаимозаменяемыми. Первые два метода используются там, где я работаю, и, насколько я могу судить, они выполняют одно и то же.

Изменить: Когда я впервые задал этот вопрос, я использовал некоторый код, скопированный из руководства по PHP для моего примера, который содержал команды mysql. Поскольку я не использую mysql, я решил, что было бы лучше переписать вопрос.

Метод 1 — используйте! Is_resource, который требует немного больше ресурсов, чем прямое сравнение, как в методе 2

$RS = sqlsrv_query($con, $SQL);
if (!is_resource($RS)) {
die('not a resource');
}

Способ 2 — прямое сравнение

$RS = sqlsrv_query($con, $SQL);
if ($RS === false) {
die('not a resource');
}

Метод 3 — это то же самое, что и метод 2, просто менее многословно? Или есть какой-то нюанс с ===, который мне не хватает?

$RS = sqlsrv_query($con, $SQL);
if (!$RS) {
die('not a resource');
}

Спасибо

-1

Решение

mysql_connect будет возвращать только ресурс или false.

Эффективно, !$db_link а также $db_link === false подобные. Изменить: «в этом случае». На самом деле они не одинаковы, так как === выполняет строгую проверку типов, но для целей этого обсуждения они фактически одинаковы.

is_resource фактически то же самое, только немного больше накладных расходов, но недостаточно для такой микрооптимизации.

Вы не должны писать новый код, используя mysql_ функции. Это давно устарело. Замена была mysqli_,

0

Другие решения

Если вы знаете, с какими возможными значениями вы имеете дело, и эти значения можно четко различить с помощью простого булева теста, то этого вполне достаточно. mysql_connect возвращает ресурс или логическое значение false, Логическое значение false всегда будет falsey и ресурс всегда будет truthy, следовательно if (!$db_link) это совершенно адекватный и лаконичный тест. Нет случая, чтобы это не сработало, учитывая два возможных значения, которые $db_link может быть здесь.

=== false более подробно о булевом сравнении, но излишне так. Это не добавляет ничего, кроме многословия.

is_resource также работает для вашей цели и более явно, с другой стороны, но опять же излишне так. Это не будет соответствовать ни одному дополнительному случаю, которого не может дать простое логическое сравнение.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector