Почему ругается notice? Доброго времени суток!
Постараюсь правильно расписать мыслю, спасибо тем, у кого хватает терпения прочесть.
Есть абстрактный класс A.
Есть singleton B который наследует А
есть класс C который наследует А
Все бы хорошо, но у А есть рекурсивный метод и переменная $array, которая перевызывает саму себя. если не находит нужное число
если $i больше двух - то начинаем искать $i в классе C, до этого ищем в классе B
надеюсь не запуталabstract class A
{
$arr = array();
public static function test($array, $i)
{
if(empty($array->arr[$i]))
{
$i++;
self::test($array->arr[$i], $i)
}
}
}
и функция казалась бы работает.
Нооо, нотесы ругаются Notice: Accessing static property C::$arr as non static
я так подозреваю что ругается из-за того, что ($array->arr[$i], $i)
вызвано как то не так.
Мне кажется что я "далеко куда то смотрю" И решение под носом.
Ткыните пожалуйста, без тапков. Спасибо

21 Авг 2019 в 06:59
215 +1
0
Ответы
1

Здравствуйте! Проблема здесь в том, что вы обращаетесь к свойству $arr как к статическому, но оно не объявлено как статическое. Вы можете изменить свойство $arr, сделав его статическим, и обращаться к нему через self:: вместо $array->arr.

Примерно так:

abstract class A
{
public static $arr = array();
public static function test($i)
{
if(empty(self::$arr[$i]))
{
$i++;
self::test($i);
}
}
}
class B extends A
{
}
class C extends A
{
}
B::$arr = array(1, 2, 3, 4, 5);
C::$arr = array(6, 7, 8, 9, 10);
A::test(3);

Таким образом, вы будете работать со статическим свойством $arr и избежите ошибки с Notice. Надеюсь, что это поможет вам решить проблему. Если у вас возникнут еще вопросы, не стесняйтесь задавать. Удачи!

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир