Покажите НЕКОТОРЫЕ невидимые / пробельные символы в Eclipse

Примечание: попытка получить свойство ошибки, отличной от объекта

Случается, когда вы пытаетесь получить доступ к объекту объекта, пока нет объекта.

Типичный пример для non-object notice будет

$users = json_decode('[{"name": "hakre"}]');
echo $users->name; # Notice: Trying to get property of non-object

В этом случае $users представляет собой массив (а не объект), и он не имеет никаких свойств.

Это похоже для доступа к несуществующему индексу или ключу массива (см. Примечание: Undefined Index ).

Этот пример значительно упрощен. Чаще всего такое уведомление сигнализирует неконтролируемое возвращаемое значение, например. когда библиотека возвращает NULL, если объект не существует или просто неожиданное значение, отличное от объекта (например, в результате Xpath, структуры JSON с непредвиденным форматом, XML с неожиданным форматом и т. д.), но код не проверяет такой условие.

Поскольку эти не-объекты часто обрабатываются дальше, часто возникает фатальная ошибка при вызове метода объекта для не-объекта (см.: Неустранимая ошибка: вызов члену function ... на не-объекте ), останавливая скрипт.

Его можно легко предотвратить, проверив условия ошибки и / или переменную, соответствующую ожиданию. Здесь такое уведомление с примером DOMXPath:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$divText = $result->item(0)->nodeValue; # Notice: Trying to get property of non-object

Проблема заключается в доступе к свойству nodeValue первого поля, пока он не был проверен, существует ли он или нет в $result коллекция. Вместо этого он платит, чтобы сделать код более явным, назначив переменные объектам, на которых работает код:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$div     = $result->item(0);
$divText = "-/-";
if ($div) {
    $divText = $div->nodeValue;
}
echo $divText;

Связанные ошибки:

160
задан tshepang 25 February 2014 в 18:55
поделиться

2 ответа

К сожалению, можно только включить всю невидимую операцию (пробел) символы одновременно. Я предлагаю, чтобы Вы зарегистрировали запрос улучшения, но я сомневаюсь, что они возьмут его.

текстовый компонент в Eclipse очень сложен, как это, и они не увлечены созданием их еще хуже.

[ОБНОВЛЕНИЕ] Это было зафиксировано в Eclipse 3.7: Перейдите к Окну> Предпочтения> Общий> Редакторы>, Текстовые редакторы

Нажимают на ссылку "пробельные символы" для точной настройки то, что нужно показать.

Престижность переходят в John Isaacks

235
ответ дан Community 23 November 2019 в 21:30
поделиться

Для этой цели я использую плагин Checkstlye. В конфигурации Checkstyle я добавляю специальные правила регулярного выражения для обнаружения строк с TAB, а затем помечаю такие строки как ОШИБКА checkstyle, что хорошо видно в редакторе Eclipse. Работает отлично.

3
ответ дан 23 November 2019 в 21:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: