注意:试图在第 169 行的 ../libraries/src/UCM/UCMType.php 中获取 属性 of non-object

Notice: Trying to get property of non-object in ../libraries/src/UCM/UCMType.php on line 169

当我尝试安装 Joomla! extension JCH,我在安装完成后想出了上面的标题消息。 我问开发人员,他回答说我不必担心扩展,因为这是 Joomla!问题是它不会影响扩展的工作方式。

UCMType.php 的第 169 行如下:

$tableNameFromType = $tableFromType->special->prefix . $tableFromType->special->type;

以及包含第 169 行的 UCMType.php 的特定部分:

public function getTypeByTable($tableName)
    {
        $query = $this->db->getQuery(true);
        $query->select('ct.*');
        $query->from($this->db->quoteName('#__content_types', 'ct'));

        // $query->where($this->db->quoteName('ct.type_alias') . ' = ' . (int) $typeAlias);
        $this->db->setQuery($query);

        $types = $this->db->loadObjectList();

        foreach ($types as $type)
        {
            $tableFromType = json_decode($type->table);
            $tableNameFromType = $tableFromType->special->prefix . $tableFromType->special->type;

            if ($tableNameFromType === $tableName)
            {
                return $type;
            }
        }

        return false;
    }

这个问题你真的不用太在意,所以第三方扩展开发者是对的。这更像是一个小错误(因此有通知),而不是一个严重的错误。您的站点将正常运行。

如您在此通知中所见,foreach(){} 循环中尝试从另一个不是对象的变量定义变量,因此它只是最有可能返回一个 NULL 值或另一个 TYPE,它没有 Object 属性 那里预期的东西。

在这种特殊情况下 整个事情发生在相对较新的 Joomla 核心 class 和界面(UCM 和 UCMType)中。在这个 class 中,他们想通过 table 定义一个内容类型,这部分代码 必须由核心 Joomla 开发人员修改、改进

你该怎么办?

1. 如果您想对 Joomla 的开发和您自己有所帮助,请在此处报告此问题:https://developer.joomla.org/tracker.html,他们将检查并修复此问题最可能。

2.这个PHP(错误)通知通常是给开发者的,所以如果你的站点是一个实时站点你基本上不应该看到这个通知。如果您在实时站点上看到这个,这可能意味着您的 Joomla 错误报告设置不正确,或者您的服务器错误报告默认设置不正确。

在你的 Joomla admin System->Global Configuration->Server->Error reporting 必须设置为 系统默认值None。因此,这些不相关的通知不会出现在您网站的用户和访问者面前。其他设置仅在您的网站不是实时网站并且您在暂存副本中进一步开发时才推荐使用。

如果您有关于 Joomla 的问题,请访问此处的 Joomla Stack Exchange:https://joomla.stackexchange.com/questions 并在那里提出您关于 Joomla 的问题。

希望以上内容为您解决了问题。