«Попытка получить свойства не-объекта» в PHP - PullRequest
6 голосов
/ 20 декабря 2010

Я разработчик темы WordPress, и над темой, над которой я работаю, я включил режим отладки и получил эту ошибку в раскрывающемся списке выбора на странице настроек темы.

Ошибка говорит это: «Попытка получить свойства не-объекта». Вот код нарушения:

 <select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
                <?php foreach ($value['options'] as $option) { ?>
               <option value="<?php echo $option->term_id; ?>"  <?php if ( $settings[$id] == $option->term_id) { echo 'selected="selected"'; }?>>
                    <?php echo $option->name; ?>
                </option>                       
               <?php }?>  </select> 

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

<option value="<?php echo $option->term_id; ?>"  <?php if ( $settings[$id] == $option->term_id) { echo 'selected="selected"'; }?>>

Спасибо за любой совет! :)

Ответы [ 4 ]

4 голосов
/ 20 декабря 2010

Вы делаете это пару раз:

$option->someproperty

Как минимум в одном из случаев $option не является объектом. Когда вы затем делаете -> для необъекта, вы получаете эту ошибку.

Сначала убедитесь, что $option действительно объект, и исправьте использование, если это не так.

Если $option - массив, тогда @matthewpavkov правильный, вы должны сделать $option['someproperty'] вместо $option->someproperty.

Если $option обычно является объектом, возможно, get_categories() иногда возвращает null или false в состоянии сбоя. Проверьте это перед доступом к $option.

Вот так:

foreach ($value['options'] as $option)
{
    if ($option)
    {
        // do whatever;
    }
}
0 голосов
/ 18 декабря 2015

Выполнить его из действия ... т.е.

function your_function(){
    YOUR CODES HEREEEEEEEEEEE............
}
ADD_ACTION('init','your_function');
0 голосов
/ 20 декабря 2010

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

$news_categories = get_categories()  //pulls all of the categories from WordPress

        array ("minititle"      => '<span class="mini_title">Select the category you\'d like to use as your "Top Story" category.</span>',
            "id"        => $shortname . "_top_story_category",
            "type"      => "cat_select",
            "options" => $news_categories)

Отсюда и значение $ value ['options']. Код является частью оператора switch ...

Мне бы пришлось опубликовать весь файл, чтобы получить контекст, и он довольно длинный.

0 голосов
/ 20 декабря 2010

Казалось бы, $option - это массив. Попробуйте:

$option['term_id']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...