@wedytd

PHP Что делать ошибка function foreach() on null?

Есть код ниже но он не работает ошибка Fatal error: Uncaught Error: Call to a member function foreach() on null на 77 строке
Diary.php:
class Diary
{
    public array $days = []; // Список дней

    /**
     * Конструктор объекта
     * В качестве параметра нужно передавать информацию, получаемую от метода REST API "rest/diary"
     * 
     * @param array $info - массив информации о журнале
     */
    public function __construct (array $info)
    {
        $this->days = array_map (fn ($day) => new Day ($day), $info['days'] ?? []);
    }

    /**
     * Проход по дням недели
     * 
     * @param callable $callable - коллбэк для вызова
     * 
     * @return Diary
     */
    public function foreach (callable $callable): Diary
    {
        foreach ($this->days as $day)
            $callable ($day);

        return $this;
    }
}
index.php:
    $diary->foreach (function ($day) //77 строка
{
    echo 'Дата: '. $day->date . PHP_EOL;
    echo 'Уроки:'. PHP_EOL . PHP_EOL;

    $i = 0;

    $day->foreach (function ($lesson) use (&$i)
    {
        echo ++$i .') '. $lesson->discipline . PHP_EOL;

        $space = str_repeat (' ', strlen ($i) + 2);

        echo $space .'Время: '. $lesson->begin_time .' - '. $lesson->end_time . PHP_EOL;
        echo $space .'Кабинет: '. $lesson->room . PHP_EOL;
        echo $space .'Учитель: '. $lesson->teacher . PHP_EOL;
        echo $space .'Тема: '. $lesson->subject . PHP_EOL;

        echo PHP_EOL;
    });

    echo PHP_EOL;
});
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Очевидно что в переменной $diary ничего нет(NULL), и вы пытаетесь вызвать метод от пустой переменной. Предполагается что для начала нужно создать в ней объект класса Diary.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы