[Помогите] ошибка Indirect modification of overloaded property

Тема в разделе "OpenCart", создана пользователем Zalom, 23 ноя 2019.

  1. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    Здравствуйте. Сайт на opencart 2.3. Обрабатывая ссылки с помощью curl, нужно было сохранять заголовки страниц отдельно от тела страниц. Нашел такую штуку.
    Код:
    protected $headers_return;
    
    public function getHeaders($ch, $str){
       $this->headers_return[] = $str;       
        return strlen($str); 
    }
       
    public function Headers_return(){
       return $this->headers_return; 
    }
    
    Заголовки отдельно собирает, но выдает ошибку.
    Код:
    Indirect modification of overloaded property ControllerVspriceVspriceProjectList::$headers_return has no effect in
    
    Погуглил. Нашел как исправить https://habr.com/ru/post/103834/, но куда вставить код не знаю. Подскажите пожалуйста.
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Потому что, вероятно, неправильно используете.
    И код странный: если метод заполняет поле класса, то он должен называться не getHeaders, а setHeaders.

    Оно вам вообще не надо.
    Вы сначала нагуглили одно и воткнули, не понимая как оно работает, а потом нагуглили ещё, чтоб исправить проблему возникнушую из-за непонимания, но снова не понимаете, что оно такое.

    Вот:
    PHP:
    protected $headers;

    public function 
    setHeaders($str){
       
    $this->headers[] = $str;
    }
     
    public function 
    getHeaders(){
       return 
    $this->headers;
    }
    И затем там, где нужно записать заголовок вызываете setHeaders, а к массиву $headers вообще не обращаетесь напрямую!
     
    Zalom нравится это.
  3. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    Спасибо)