PHP: умереть или проверить результаты? - PullRequest
2 голосов
/ 03 мая 2011

Я внедряю LDAP с PHP, что довольно легко, надо сказать. Однако у меня есть вопрос относительно использования die() или проверки возврата функции. Из приведенного ниже кода ( взято отсюда ), какой смысл проверять $ldapconn, если вы используете die() с ldap_connect? Разве PHP не должен завершаться с die(), если что-то пойдет не так с ldap_connect?

// connect to ldap server
$ldapconn = ldap_connect("ldap.example.com")
    or die("Could not connect to LDAP server.");

if ($ldapconn) {

    // binding to ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

    // verify binding
    if ($ldapbind) {
        echo "LDAP bind successful...";
    } else {
        echo "LDAP bind failed...";
    }

}

Ответы [ 4 ]

3 голосов
/ 03 мая 2011

Это не служит никакой цели. ldap_connect вернет false, если он потерпит неудачу, и умрет, поэтому вы можете удалить один из 2.

Я бы предложил удалить штамп и добавить хорошую обработку ошибок.

Источник: PHP ldap_connect

Вы должны быть осторожны с тестированием ldap_connect в PHP5.3. Я могу успешно подключиться к любому серверу (существующему или нет), где ldap_connect всегда возвращает true. Тип ссылки всегда ldap_connection, но на самом деле может не работать / быть успешным. Я бы посоветовал проверить правильность соединения с @ldap_bind, а затем проверить ошибки.

2 голосов
/ 03 мая 2011

Вы правы, это довольно избыточно.

Кроме того, вы должны когда-либо die только в макетах или действительно простых скриптах CLI.Для «настоящих» сайтов вы должны обрабатывать ошибки более изящно и выводить правильные страницы ошибок, а не просто die ing.

0 голосов
/ 03 мая 2011

ldap_connect возвращает false при ошибке.Матрица полезна там, потому что с ее помощью вы сможете установить читабельную ошибку / предупреждение, которое увидит разработчик.

0 голосов
/ 03 мая 2011

ldap_connect () возвращает false в случае сбоя соединения.В этом случае сценарий останавливается функцией die () и возвращается сообщение.Никакой другой код ниже этой строки не будет выполнен.

...