bestxp
20.03.2015 - 16:14
AllesKlar
а зачем его вообще на счет этого спрашивать?
ты должен сделать правильно и надежно, а не городить огород,
и да надо делать проверки перед вскармливанием simple_xml
можно повесить обработчик ошибок и в нем кидать эксепшен, а потом перехватывать.
set_error_handler(function ($error, $message) {
throw new Exception($message, $error);
});
try {
simplexml_load_string('s');
} catch (Exception $ex) {
die($ex->getMessage());
}
Это рабочий код.
Но как заметили выше, ситуацию с фейлом по запросу нужно отлавливать выше так как это
ИСКЛЮЧИТЕЛЬНАЯ ситуация, потому лучше при плохом исходе кидать исключения, которое уже можно перехватить.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
AllesKlar
20.03.2015 - 23:13
bestxp
Цитата |
а зачем его вообще на счет этого спрашивать? |
Потому что заказчик - это девелоперская фирма.
И потом мой класс будут другие дополнять / изменять.
Колективная работа - это в том числе и забота о тех, кто будет твой код использовать
BolikЦитата |
что может быть проще и эффективнее одного единственного метода загрузки контента через курл и проверки заголовков? все остальное и есть дублирование кода, которое ты хочешь избежать. |
Ну, например, когда модуль работает не с нашего сервера, а заказчик покупает его целеком и ставит на свой.
А оно не работает.
Почему?
А у него курла нет.
Те, кто скажут "сам дурак", могут дальше на фрилансе писать плагины к JQuery
А реально будет выглядить так:
Заказчик видит модуль у нас на сервере, покупает. Устанавливает. Не работает. звонит в суппорт. (время-деньги пошло) Суппорт не понимает в чем проблема и передает тикет в суппорт level-2 (программистам, т.е.). Программисты гоняют модуль у нас, все работает, просят доступ к серверу заказчика. Гоняют модуль у него, дебажат, находят место, где вываливается ошибка, что curl_init() вообще ни разу не знакомая серверу функция, сообщают об этом заказчику.
Заказчик говорит, что мы дебилы, а мы, чтобы не выглядить дебилами и не потерять заказчика, устанавливем ему за бесплатно curl
(время-дженьги стоп)
Итого, примерно штук 8 человеко/часов. С учетом ттого, что человеко-час среднему работадателю программистов обходится в 60-70 Евро, то получаем вот из-за такой ерунды 500 евро убытка, которые мне потом при случае вспомнят.
И оно мне надо???
_____________
[продано копирайтерам]
sergeiss
21.03.2015 - 00:35
Цитата (AllesKlar @ 20.03.2015 - 23:13) |
И оно мне надо??? |
Напиши в каментах и в доках к модулю, что для его работы нужен курл и "все идут лесом".
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
killer8080
21.03.2015 - 01:08
столько проблем из-за предрассудков насчет собак
Invis1ble
21.03.2015 - 01:14
насколько я понял, ТС разрабатывает клиента под API
в таком случае собаками не решишь проблему распознавания причины ошибки со стороны сервера, а это может быть очень полезно
например, сервер может отдавать различные коды ошибок, может просто лежать и всё это очень неплохо логировать
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
killer8080
21.03.2015 - 01:24
Цитата (Invis1ble @ 21.03.2015 - 00:14) |
например, сервер может отдавать различные коды ошибок, может просто лежать и всё это очень неплохо логировать
|
если сервер отдал контент, то что мешает посмотреть заголовки?
$xml = @simplexml_load_file('http://phpforum.su/rss/');
echo '<pre>';
print_r($http_response_header);
print_r($xml);
echo '</pre>';
killer8080
21.03.2015 - 16:23
Цитата (Invis1ble @ 21.03.2015 - 01:14) |
а если не отдал? |
под контентом я подразумевал любой ответ сервера, в том числе и с 500-ми ошибками
Но вообще имхо для работы с xnl лучше использовать отдельный класс, а не городить костыли прямо в методах вокруг simplexml.
Invis1ble
21.03.2015 - 17:32
Цитата (killer8080 @ 21.03.2015 - 15:23) |
под контентом я подразумевал любой ответ сервера, в том числе и с 500-ми ошибками |
ну а если сервер лежит, не отвечая?
Цитата (killer8080 @ 21.03.2015 - 15:23) |
Но вообще имхо для работы с xnl лучше использовать отдельный класс, а не городить костыли прямо в методах вокруг simplexml. |
например, какой класс? впрочем, это дело второстепенное, как мне кажется, отдельный класс или отдельный метод
непонятно, правда, почему ты считаешь это костылем?
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
killer8080
21.03.2015 - 18:11
Цитата (Invis1ble @ 21.03.2015 - 16:32) |
ну а если сервер лежит, не отвечая? |
тогда и кода ошибки нет
Цитата (Invis1ble @ 21.03.2015 - 16:32) |
например, какой класс? впрочем, это дело второстепенное, как мне кажется, отдельный класс или отдельный метод непонятно, правда, почему ты считаешь это костылем? |
получение и парсинг xml можно выделить как отдельную сущность. Пихать её в метод, значит дублировать код в каждом месте где нужно работать с xml.
костылем я считаю
Цитата |
выключить ошибки вызвать функцию включить ошибки |
собаку для этих целей использовать не только можно, но и нужно
Invis1ble
21.03.2015 - 18:16
Цитата (killer8080 @ 21.03.2015 - 17:11) |
тогда и кода ошибки нет |
а с курлом можно будет понять, почему нет ответа
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
killer8080
21.03.2015 - 18:44
Цитата (Invis1ble @ 21.03.2015 - 17:16) |
а с курлом можно будет понять, почему нет ответа |
нет ответа, значит нет соединения
В целом согласен, с курлом ошибка будет информативней