"Неопределенное свойство: stdClass"
Эта ошибка внезапно произошла, когда 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 ответ
Короткий ответ: в вашем пользовательском модуле вы должны проверить, существует ли это свойство, прежде чем его считать. Или убедитесь, что объект $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 делает. Это побуждает этот тип вопросов много.
Если это ваша единственная проблема с уведомлением, имеет смысл просто исправить ваш пользовательский модуль.