За последние 24 часа нас посетили 16119 программистов и 1545 роботов. Сейчас ищут 937 программистов ...

Переход на PHP 7. Ошибка

Тема в разделе "Сделайте за меня", создана пользователем Burlet, 30 май 2017.

  1. Burlet

    Burlet Новичок

    С нами с:
    30 май 2017
    Сообщения:
    2
    Симпатии:
    0
    Приветствую форумчане.
    Прошу помощи по скрипту. После перехода на PHP 7.0 с PHP 5.3 повылазило куча ошибок.
    Путем обновления библиотек и прочтения различных FAQ удалось побороть предупреждения, ошибки. Кроме одной.

    Notice: Only variables should be passed by reference in \engine\File.php on line 60
    Привожу всю функцию:
    PHP:
    1.     public function findRow()
    2.     {
    3.         $params = array("SELECT * FROM ?_".$this->table.$this->_prepare()." ORDER BY id");
    4.         $rows = call_user_func_array(array($this->db, 'select'), $params);
    5.         list($id, $result) = each($this->_convertRows($rows));
    6.         return $this->entity($result);
    7.     }
    Проблема в строке:
    PHP:
    1. list($id, $result) = each($this->_convertRows($rows));
    Можно конечно скрыть ошибки ну это ненадолго. Вычитал что в PHP 7.2 функция each объявлена устаревшей. Да и не комильфо это скрывать ошибки зная что они есть.

    Помогите, пожалуйста переписать функцию под PHP 7+
    Буду очень признателен.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    спасу тебя сразу от вопросов про deprecated each() через пол года.
    замени на
    PHP:
    1. public function findRow()
    2.     {
    3.         $params = array("SELECT * FROM ?_".$this->table.$this->_prepare()." ORDER BY id");
    4.         $rows = call_user_func_array(array($this->db, 'select'), $params);
    5.         return $this->entity($this->_convertRows($rows)[0]??[]);
    6.     }
    --- Добавлено ---
    че за хрень тут написана вообще?
    --- Добавлено ---
    а попробуй так:
    PHP:
    1. public function findRow()
    2.     {
    3.         $rows = $this->db->select("SELECT * FROM ?_".$this->table.$this->_prepare()." ORDER BY id");
    4.         return $this->entity($this->_convertRows($rows)[0]??[]);
    5.     }
     
  3. Burlet

    Burlet Новичок

    С нами с:
    30 май 2017
    Сообщения:
    2
    Симпатии:
    0

    Большое спасибо за помощь!
    Ваш метод помог. Все работает.
    На почту пришел правильный код, не обрезанный.