【问题标题】:"Undefined property: stdClass"“未定义的属性:stdClass”
【发布时间】:2011-12-13 22:04:36
【问题描述】:

在将 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:注意:未定义的属性:user_search_location_get() 中的 stdClass::$user_location_pref

【问题讨论】:

    标签: drupal drush pressflow


    【解决方案1】:

    简短的回答,在您的自定义模块中,您应该在计算之前检查该属性是否存在。那,或者在使用它之前确保 $user 对象具有该属性。

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

    虽然需要做更多的工作,但当您在打开通知的情况下开始开发时,您会发现代码中出现错误,否则这些错误直到以后才会出现,并且更难追踪。

    在您之前的环境或安装中,PHP 错误报告可能设置为不显示通知。虽然我建议保持通知并让您的代码与它们一起工作,但您可以通过 Drupal 7 UI 将它们关闭。配置 -> 开发 -> 日志记录和错误。然后将值设置为“错误和警告”...否则,您可以在 php.ini 中设置错误报告级别以报告除通知之外的所有内容。

    请注意,Drupal 6 不会强制通知报告,而 Drupal 7 会。这会经常提示这类问题。

    如果这是您唯一的注意问题,那么更正您的自定义模块会更有意义。

    【讨论】:

    • 我认为您遇到了真正的问题。然而,这一切都发生在 Drupal 6 中;有一点皱纹 - 直到安装了 Pressflow Drupal,错误才变得明显。所以。您提供了在 Drupal 7 中打开/关闭的方法。Drupal 6 怎么样?另请注意,这些错误正在通过 Drush 显示在屏幕上。
    • 我认为底线是如果你想忽略通知,PHP的错误报告需要设置为error_reporting(E_ALL ^ E_NOTICE);。您可以在 php.ini 中设置它并重新启动 Web 服务器。也许 Drupal 6 强迫他们被压制而 Pressflow 没有?不确定。
    • 是的,Pressflow 和 Drupal 6 将错误报告设置为不同的级别。
    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 2016-04-20
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多