Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro DAO

Pessoal, no meu projeto esta dando um erro, como não sou experiente não sei o que ele quer dizer... como tem q criar bando e tudo mais, eu acho meio chato ficar perguntando esse tipo de dúvida, por o meu projeto não esta igual do alura, fiz diferente para ser ousado msm, mais as vezes me perco. Bem vamos ao meu erro e no que vocês poderem me ajudar. Bem na hora de lista o produto esta dando esse seguinte erro:

"Fatal error: Uncaught ArgumentCountError: Too few arguments to function LivroDao::__construct(), 0 passed in /opt/lampp/htdocs/Projetos/CadastroLivros/lista-livros.php on line 24 and exactly 1 expected in /opt/lampp/htdocs/Projetos/CadastroLivros/class/LivroDao.php:7 Stack trace: #0 /opt/lampp/htdocs/Projetos/CadastroLivros/lista-livros.php(24): LivroDao->__construct() #1 {main} thrown in /opt/lampp/htdocs/Projetos/CadastroLivros/class/LivroDao.php on line 7"

Na minha classe LivroDao, esta ok, pois eu adiciono normalmente o "livro", pelo menos diz q adicionou. E adiciona no banco, o problema é na hora de lista, que da esse erro. Eu olhei na linha 24 do listaLivros.php e esta Ok tbm aparentemente, comparando o projeto do Alura.

Eu subi para meu git o repositório:- https://github.com/octavioviana/PHPAlura

Quem quiser dar uma olha e uma força fico agradecido. Muito Obrigado!!

3 respostas
solução!

Oi Octavio, tudo bom?

Segundo seu erro, o problema está na linha 24 do lista-livros:

    $livroDao = new LivroDao();

Porém, dando uma olhada no sei LivroDao, parece que temos um construtor que recebe um parametro:

function __construct($conexao) {
    $this->conexao = $conexao;
  }

Isso significa que para criar um LivroDao, sempre vamos ter que passar a $conexão. Ou seja, você só precisa criar a conexão e passar lá na linha 24 do seu lista-livros:

    //cria a $conexao
    $livroDao = new LivroDao($conexao);

Olhando o código do GIT, o problema está neste arquivo do listalivros. Essa classe LivroDao precisa receber como parâmetro ao ser criada uma conexão. Nesta página você está instanciando a classe sem enviar nenhum parâmetro. Tem que ser algo assim:

$livroDao = new LivroDao($conexao);

Obrigado galera... Era isso mesmo... :D