Pergunta do FeedWordPress do WordPress: count(): countable deve ser um parâmetro de matriz ou objeto a ser aplicado

Um usuário perguntou ?

Ao executar o PHP 7.4, recebo o seguinte aviso nos logs:

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

Este está conectado à linha 302 de feedwordpress/syndicatedlink.class.php (pelo menos a versão 2017.1020.), de jeito nenhum

if (count($tombstones) > 0) :

Agora quando a variável $tombstones por exemplo, um NULLisso falhará porque NULL não é uma matriz ou um objeto. Versões mais antigas do PHP igualariam qualquer tipo de erro com o valor zero (ou FALSE), o que significa que você pode ser um pouco mais descuidado com verificações como a acima. As versões contemporâneas do PHP são mais solicitadas, mesmo que muitas vezes sejam apenas um aviso e não um erro. Nesse caso, uma correção simples é alterar a linha 302 para:

if (is_countable($tombstones) && count($tombstones) > 0) :

is_countable() introduzido no PHP 7.3 apenas para este propósito.

Pode haver mais casos como este no resto do código, mas, até agora, ele corrige facilmente o aviso (e o protege no futuro se os desenvolvedores do PHP decidirem fazer desse aviso específico um erro fatal, o que tem uma boa chance para ser feito a tempo…).

O FeedWordPress não tem muitas atualizações (simplesmente funciona…), mas talvez um dia desses os desenvolvedores desse ótimo plugin possam fazer essa pequena correção. Obrigado!

lançador de tópicos

(@gwynethllewelyn)

1 ano, 1 mês atrás

Nota para si mesmo: apenas cinco dias atrás, uma correção foi feita para enviá-lo para o repositório GitHub onde o FeedWordPress é mantido, o que resolve esse problema:

O desenvolvedor que fez a alteração abordou a situação especificamente quando $tombstones se converte em NULL usando código compatível com versões do PHP anteriores a 7.3 (outros cenários possíveis não são verificados).

Agora só falta liberar a nova versão publicamente ?

(@radgeek)

Há 1 ano

Oi, eu só quero que você saiba que eu enviei todas as alterações que estão atualmente no github para a loja de plugins do WordPress. Deixe-me saber se isso resolve o problema para você, se tudo parece ser o caso, etc! -C

lançador de tópicos

(@gwynethllewelyn)

10 meses, 3 semanas atrás

Muito obrigado! Esqueci de verificar este tópico, mas acho que você pode marcá-lo com segurança como fechado/consertado/resolvido.

lançador de tópicos

(@gwynethllewelyn)

10 meses, 2 semanas atrás

… Ops! Agora o PHP reclama da linha 708 in. syndicatedpost.class.php. O culpado está em public function author ()e a linha é relevante

if (count($aa) > 0) :

A solução do PHP 7.3 em diante é:

if (is_countable($aa) && count($aa) > 0) :

Para versões mais antigas, há uma correção disponível nas notas para É contável ().

(@radgeek)

5 meses, 3 semanas atrás

Obrigado pelo truque sobre isso. Eu cuido dessa linha. Quero saber se você tem o URL de um feed que dá esse aviso. (Se não, não se preocupe, entendo que já faz um tempo. Mas se você tiver o URL, seria útil, pois ele me fornece um caso de teste para uma condição que gostaria de lembrar de testar.)

Obrigado! Vou responder novamente e fechar este tópico quando a alteração for aplicada.

(@wordpresstator)

Faz 2 meses

Olá!

Eu tenho um aviso semelhante: count()* depois de atualizar o PHP para 7.4:

Alguma ajuda? Desde já, obrigado!

*Aviso: count(): o parâmetro deve ser um array ou objeto aplicado por um Count em /homepages/29/d395190552/htdocs/clickandbuilds/FRGWorldwideOy/wp-includes/post-template.php na linha 317

(@jovialcore)

Faz 2 meses

Oi… você tentou fazer as pazes com @gwynethllewelyn???

Isto foi útil?

0 / 0

Deixe uma resposta 0

O seu endereço de email não será publicado. Campos obrigatórios são marcados *