В PHP 7.2 функция count () не работает - PullRequest
0 голосов
/ 03 июня 2018

У меня есть работающее приложение php, и оно работает нормально в версии php 7.0.Но когда я обновляю версию php до 7.2.Я получаю эту ошибку:

count(): Parameter must be an array or an object that implements Countable

Я получаю ошибки в коде, где я сравниваю свои данные с функцией подсчета.Например, это мой код:

$keytest = KeyUser::where('key', '=', $key)->first();
 if (count($keytest) == 1) {
   //logic ... 
  }

Я использую laravel, когда выполняю запрос и считаю его, если он равен 1, тогда логика должна работать.

Итак, моя проблема в том, что я написал такую ​​логику на многих контроллерах, и если мне придется все менять по очереди, это может стать кошмаром.Так есть ли способ, где я могу написать глобальную функцию, чтобы заставить работать счетчик, как это работало в более старой версии php.Что может быть проще всего исправить.

Ответы [ 2 ]

0 голосов
/ 07 августа 2018

Это решается, когда вы меняете код:

$keytest = KeyUser::where('key', '=', $key)->first();
if ($keytest) {
   //logic ... 
}
0 голосов
/ 03 июня 2018

Эту проблему можно решить с помощью отключения обработки ошибок.Пожалуйста, обратитесь к этой ссылке для решения: Laravel не совместим с php 7.2

Здесь я нашел решение вашей проблемы, просто напишите этот код внутри вашего контроллера или, если вы хотите, чтобы он работал на всеПриложение написать этот код в route.php:

 //app/Http/routes.php

 if (version_compare(PHP_VERSION, '7.2.0', '>=')) {
// Ignores notices and reports all other kinds... and warnings
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
// error_reporting(E_ALL ^ E_WARNING); // Maybe this is enough
}

Я знаю, что это не лучшее решение, но это может быть хорошим взломом.

...