"Неопределенное свойство: stdClass" - PullRequest
1 голос
/ 14 декабря 2011

Эта ошибка внезапно произошла, когда Pressflow был добавлен в нашу установку Drupal. Это происходит из пользовательского модуля, который до Pressflow, казалось, работал нормально. После добавления Pressflow при запуске Drush эта ошибка отображается на экране.

Функция, указанная в качестве источника ошибки, выглядит следующим образом:

function user_search_location_get(&$user) {
  if (count($user->user_location_pref)) {  // This line is causing the error.
    return $user->user_location_pref;
  }

  // …
}

Сообщение об ошибке следующее:

WD php: Примечание: неопределенное свойство: stdClass :: $ user_location_pref в user_search_location_get ()

1 Ответ

2 голосов
/ 15 декабря 2011

Краткий ответ, в вашем пользовательском модуле вы должны проверить, существует ли это свойство, прежде чем считать его.Это, или убедитесь, что объект $ user имеет это свойство, прежде чем использовать его.

if (isset($user->user_location_pref) && count($user->user_locaion_pref) > 0) {
  return $user->user_locaion_pref;
}

Хотя это немного больше работы, когда вы начнете разработку с включенными уведомлениями, вы обнаружите ошибки в своем кодеиначе это не появилось бы позже, и было бы сложнее отследить.

В вашей предыдущей среде или установке отчет об ошибках PHP, вероятно, был настроен так, чтобы не показывать уведомления.Хотя я рекомендую сохранять уведомления и заставлять ваш код работать с ними, вы можете отключить их через пользовательский интерфейс Drupal 7.Конфигурация -> Разработка -> Ведение журнала и ошибки.Затем установите значение «Ошибки и предупреждения» ... В противном случае вы можете установить свой уровень сообщений об ошибках в своем php.ini, чтобы сообщать обо всех, кроме уведомлений.

Обратите внимание, что Drupal 6 не заставлял уведомления о уведомлениях,в то время как Drupal 7 делает.Это вызывает много вопросов такого типа.

Если это ваша единственная проблема с уведомлением, имеет смысл просто исправить ваш пользовательский модуль.

...