При проверке действительного ресурса в 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');
}
Спасибо
mysql_connect будет возвращать только ресурс или false.
Эффективно, !$db_link
а также $db_link === false
подобные. Изменить: «в этом случае». На самом деле они не одинаковы, так как === выполняет строгую проверку типов, но для целей этого обсуждения они фактически одинаковы.
is_resource
фактически то же самое, только немного больше накладных расходов, но недостаточно для такой микрооптимизации.
Вы не должны писать новый код, используя mysql_
функции. Это давно устарело. Замена была mysqli_
,
Если вы знаете, с какими возможными значениями вы имеете дело, и эти значения можно четко различить с помощью простого булева теста, то этого вполне достаточно. mysql_connect
возвращает ресурс или логическое значение false
, Логическое значение false
всегда будет falsey и ресурс всегда будет truthy, следовательно if (!$db_link)
это совершенно адекватный и лаконичный тест. Нет случая, чтобы это не сработало, учитывая два возможных значения, которые $db_link
может быть здесь.
=== false
более подробно о булевом сравнении, но излишне так. Это не добавляет ничего, кроме многословия.
is_resource
также работает для вашей цели и более явно, с другой стороны, но опять же излишне так. Это не будет соответствовать ни одному дополнительному случаю, которого не может дать простое логическое сравнение.