Webboard

Pełna wersja: XEM Fast Rep - count() error
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Adres forum:
www.e-raper.pl


Wersja silnika:
1.8.x


Opis problemu:
Witam. Mam problem z wtyczką XEM Fast Rep. Po zainstalowaniu wtyczki pojawia się błąd
Kod:
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 587 - File: inc/plugins/xem_fast_rep.php PHP 7.2.3 (Linux)
Ktoś wie jak to naprawić? W pliku xem_fast_rep.php nic nie zmieniałem, a w google nie znalazłem podobnego problemu. Z góry dziękuję
Problem rozwiązany. Problemem było count(); w php 7.2. Wystarczy zamienić 
Kod:
$count_likeThis = count($likeThis);
na
Kod:
if (isset($likeThis)) {
    $count_likeThis = count($likeThis);
}
Nie wiem czy jest to dobre i bezpieczne rozwiązanie, ale działa. Zostawiam dla potomnych :D
Generalnie lepiej byłoby poprawić $likeThis, ale te rozwiązanie także będzie działać.
Jak zrobiłeś to w ten sposób to dodaj jeszcze $count_likeThis = 0; przed tym ifem. Teraz może być przypadek kiedy $count_likeThis będzie niezdefiniowane.
(05.01.2019, 11:42)Matslom napisał(a): [ -> ]Generalnie lepiej byłoby poprawić $likeThis, ale te rozwiązanie także będzie działać.
Jak zrobiłeś to w ten sposób to dodaj jeszcze $count_likeThis = 0; przed tym ifem. Teraz może być przypadek kiedy $count_likeThis będzie niezdefiniowane.

Tylko, że $likeThis jest tablicą i nie mam pojęcia dlaczego to wywalało błąd 
Widocznie w jakimś przypadku jest ona niedefiniowana.
Lepszym rozwiązaniem jest powrót do tej linijki:
Kod:
$count_likeThis = count($likeThis);
I przed nią wstawić to:
Kod:
if (!isset($likeThis) || !is_array($likeThis)) {
   $likeThis = [];
}
Teraz zajrzałem do tej wtyczki, jak już upieramy się przy najlepszym rozwiązaniu, to wystarczy
Kod:
$count_likeThis = count($likeThis);
if(is_array($likeThis))
{
zamienić na
Kod:
if(is_array($likeThis)) {
    $count_likeThis = count($likeThis);
zamiast dublować funkcjonalność.