Уведомление: попытка получить свойство не-объекта в ../libraries/src/UCM/UCMType.php в строке 169

#php #joomla #joomla-extensions

#php #joomla #joomla-расширения

Вопрос:

Когда я попытался установить Joomla! расширение JCH, я получил заголовок сообщения выше после завершения установки. Я спросил разработчика, и он ответил, что мне не нужно беспокоиться о расширении, поскольку это Joomla! проблема в том, что это не повлияет на работу расширения.

Строка 169 из UCMType.php является ли следующее:

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

И конкретная часть UCMType.php это включает строку 169:

 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;
    }
  

Ответ №1:

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

Как вы видите в этом уведомлении, в foreach(){} цикле переменную пытаются определить из другой переменной, которая не является объектом, поэтому она просто возвращает значение NULL или, скорее всего, другого ТИПА, у которого нет свойства Object, которое там ожидается.

В данном конкретном случае все это происходит в относительно новом базовом классе и интерфейсе Joomla (UCM и UCMType). В этом классе они хотят определить тип контента по таблице, и эта часть кода должна быть изменена, улучшена основными разработчиками Joomla.

Что вам следует делать?

1. Если вы хотите немного помочь разработке Joomla и себе, пожалуйста, сообщите об этой проблеме здесь: https://developer.joomla.org/tracker.html , и они, скорее всего, проверят и исправят это.

2. Это уведомление об ошибке PHP обычно предназначено для разработчиков, поэтому, если ваш сайт является действующим сайтом, вы не должны видеть это уведомление в принципе. Если вы видите это на реальном сайте, это может означать, что либо у вас неправильно настроено сообщение об ошибках Joomla, либо неверно задано значение по умолчанию для сообщений об ошибках сервера.

У вашего администратора Joomla в System-> Global Configuration-> Server-> Error reporting должно быть установлено значение по системному умолчанию или Нет. Таким образом, эти не относящиеся к делу уведомления не будут отображаться для пользователей, посетителей вашего сайта. Другие настройки рекомендуются только в том случае, если ваш сайт не является действующим сайтом и вы продолжаете его разработку, например, в промежуточной копии.

И, пожалуйста, если у вас есть вопросы по Joomla, посетите Joomla Stack Exchange здесь:https://joomla.stackexchange.com/questions и, пожалуйста, задавайте свои вопросы относительно Joomla там.

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