1. Главная
  2. Форумы
  3. Общие
  4. Разное непонятное

Как вам конструкция?

Главные вкладки

Портирую один из кастомных модулей D6. Обнаружил в коде (это реально был рабочий модуль):

<?php
...
function
poservices_order_create_new(PoserviceMerchant $merchant, $email, $serviceID = 0, $data = array()) {
if (
0 == $serviceID || false === ($service = poservices_get_pServices($merchant->mid, $serviceID))) {
drupal_set_message('Попытка сохранить пустой заказ.', 'error');
break;
// << what the hell?
}
// ... код ...
return true; // ... код ...
return false;
}
?>

Какое тут поведение ожидается от break; (только навскидку, не подглядывая в Гугл) ? IDE, кстати, подчеркнула эту строку красным.

Комментарии

Аватар пользователя OldWarrior OldWarrior 25 июня 2020 в 14:26

Меня всегда сбивают с толку подобные неоднозначные конструкции.

Например, из user notes к break:

A break statement that is in the outer part of a program (e.g. not in a control loop) will end the script. This caught me out when I mistakenly had a break in an if statement

i.e.


<?php
echo "hello";
if (
true) break;
echo
" world";
?>

will only show "hello"

Но там-то всё понятно, нет внешнего цикла и внешнего тела вообще.

А здесь-то что хотели сделать? Завершить функцию или завершить работу текущего included-скрипта или, может, вообще завершить PHP-процесс? Хотя последнее не так делается.

---
PS. Опять же, судя по всему функция возвращает булевы значения. Почему бы не вернуть просто FALSE? Коллстек сейчас отслеживать нет желания, но может таки обработчик результата как-то слишком однозначно интерпретирует результат и FALSE считается ошибкой другого характера.

Логотип drupal.ru

Содержимое сайта публикуется на условиях CreativeCommons Attribution-ShareAlike 3.0 или более поздней версии. Программные коды в тексте статей — на условиях GNU GPL v2 или более поздней версии.

Документация по совместной работе с репозиторием drupal.ru – https://docs.drupal.ru/code

Drupal – торговая марка Дриса Бёйтарта

12+

AltStyle によって変換されたページ (->オリジナル) /