Понимание обработки ошибок php и выполнения кода - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь перенести приложение php на .net и, просматривая код php, наткнулся на фрагмент, который немного сбивает с толку.Блок, показанный ниже

$cur_xml_valid = 'N';                        
$GenerateXml[] = "<J>";
$seq ++;
$GenerateXml[] = "<ANumber>" . $seq . "</ANumber>";
$GenerateXml[] = "<Customer>" . str_replace(array('&','>','<','"','\''), array('&amp;','&gt;','&lt;','&quot;','&apos;'), $invoice['customer']) . "</Customer>";
$GenerateXml[] = "<CompletionDate>" . str_replace(' ', 'T', $invoice['DateCreated']) . "</CompletionDate>";
$GenerateXml[] = "<OrderNumber>" . $invoice['SO'] . "</OrderNumber>";
$GenerateXml[] = "<OrderType>" . $invoice['type'] . "</OrderType>";
$GenerateXml[] = "<Comments>" . str_replace(array('&','>','<','"','\''), array('&amp;','&gt;','&lt;','&quot;','&apos;'), $invoice['Comments']) . "</Comments>";
$cur_xml_valid = 'Y';

if ($cur_xml_valid == 'N') {
    $sqlxmlmismatch = "INSERT INTO xml_log (No,LogDesc) VALUES ( '$invoice_no','DOES NOT EXIST IN FILES (" . $invoice['Address'] . ")')";
    $resultxmlmismatch = $db->query($sqlxmlmismatch);
    $objWorksheet->getCell("BH$start_row")->setValue('DOES NOT EXIST IN FILES - NOT SENT');
}

Изначально $ cur_xml_valid устанавливается в «N», а после построения некоторой строки XML он устанавливается в «Y».Сразу после условия if оценивается, является ли $ cur_xml_valid 'N' или нет.

Q.Пожалуйста, подтвердите, что это просто неверный код, и $ cur_xml_valid никогда не установит значение 'Y', если произойдет ошибка.Все выполнение останавливается в php, если возникает ошибка, при условии, что нет блоков try / catch?

Q.Для нормального потока (без исключения) $ cur_xml_valid всегда будет установлен в «Y».

1 Ответ

2 голосов
/ 24 сентября 2019

Ваши предположения верны, $cur_xml_valid не может быть равным N, когда дело доходит до оператора if.

Чтобы дать кодировщику преимущество сомнения, возможно, былоболее ранняя версия, в верхней части которой был проверочный код (возможно, он получил XML из API).Динамическая выборка и проверка XML были удалены, но они оставили переменную и код, который ее проверяет.Подобные вещи не редкость, когда код развивается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...