Erro implements Countable Bom dia! Estou iniciando no Framework, e tambem em PHP. Comprei o Livro, estou aguardando chegar. Iniciando os estudos, ao implementar qualquer classe (mesmo dos exemplos), recebo o erro: Warning: count(): Parameter must be an array or an object that implements Countable in Pesquisei que é algo sobre o PHP 7. Existe ja alguma solução? Obrigado...
FM
Erro implements Countable  
Bom dia!
Estou iniciando no Framework, e tambem em PHP.
Comprei o Livro, estou aguardando chegar.
Iniciando os estudos, ao implementar qualquer classe (mesmo dos exemplos), recebo o erro:
Warning: count(): Parameter must be an array or an object that implements Countable in
Pesquisei que é algo sobre o PHP 7. Existe ja alguma solução?
Obrigado

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (9)


NR

O php ficou mais criterioso na versão 7.2. Troque para uma versão anterior ou inicialize a variável $properties como array no construtor da classe TStyle.
FM

Obrigado Nataniel!
Deu certo com a inicalização da $properties.
LJ

Estou usando a versao php 7.2
 
  1. <?php
  2. class TStyle
  3. {
  4. private $name; // stylesheet name
  5. private $properties; // properties
  6. static private $loaded; // array of loaded styles
  7. static private $styles;
  8. /**
  9. * Class Constructor
  10. * @param $mame Name of the style
  11. */
  12. public function __construct($name)
  13. {
  14. $this->name = $name;
  15. // para compatibilidade com php7.2
  16. $properties = array();
  17. }
  18. // outros metodos...
  19. /**
  20. * Return if the style has any content
  21. */
  22. public function hasContent()
  23. {
  24. return count($this->properties) > 0; // Nesta linha esta dando erro
  25. }
  26. ?>


Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/html/epcp/lib/adianti/widget/base/TStyle.php on line 91
LJ

Pessoal , alterei a linha

$properties = array();

para $this->properties = array();

e ai funcionou sem erro.
LJ

Agora o erro esta
count(): Parameter must be an array or an object that implements Countable in /var/www/html/epcp/lib/adianti/core/AdiantiCoreApplication.php on line 205

o mesmo erro que https://www.adianti.com.br/forum/pt/view_4165?versao-do-php-recomendada

 
  1. <?php
  2. /**
  3. * Build HTTP Query
  4. *
  5. * @param $class class name
  6. * @param $method method name
  7. * @param $parameters array of parameters
  8. */
  9. public static function buildHttpQuery($class, $method = NULL, $parameters = NULL)
  10. {
  11. $url = array();
  12. $url['class'] = $class;
  13. $url['method'] = $method;
  14. unset($parameters['class']);
  15. unset($parameters['method']);
  16. $query = http_build_query($url);
  17. $callback = self::$router;
  18. $short_url = null;
  19. if ($callback)
  20. {
  21. $query = $callback($query, TRUE);
  22. }
  23. else
  24. {
  25. $query = 'index.php?'.$query;
  26. }
  27. if (strpos($query, '?') !== FALSE)
  28. {
  29. return $query . ( count($parameters)>0 ? '&'.http_build_query($parameters) : '' ); //linha 205 - com erro para php7.2
  30. }
  31. else
  32. {
  33. return $query . ( count($parameters)>0 ? '?'.http_build_query($parameters) : '' );
  34. }
  35. }
  36. ?>

ML

Boa noite Luiz, tudo bem ?

Você conseguiu resolver o problema ?

Eu também instalei php 7.2
AS

Boa noite,
eu consegui tirar o erro da linha 205 tirando a função count , e o erro desapareceu.
AP

Basta colocar o @ antes do Count
NJ

Olá a todos!

Iniciei a utilização do microERP e também tive estes erros, fiz alteração no fonte incluindo @ arroba antes do count e tudo funcionou.

PORÉM, não sei se é uma boa prática ficar alterando o fonte do framework, pois nas próximas atualizações estas alterações feitas individualmente serão perdidas.

Seria um feedback dos mentores do projeto.

Um abraço a todos.