Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
13
respostas

PHP Fatal error: Uncaught Error: Class

Então, a poucos dias participei de um forum em busca de tirar uma dúvida referente a este mesmo assunto mas como não era meu a discussão eu preferi me abster e resolver sozinho, porém já estou a 2 dias (6hrs cada) tentando e tentando e não cheguei a nenhuma conclusão, (Estou a cara do desespero). Tentei diversas soluções e parti para o básico, fiz uma pasta com apenas um arquivo.php, e a minha classe dentro da pasta src, disposta da seguinte maneira:

##Essa pasta com esses arquivos foi criada apenas com o intuíto de localizar o erro, estava fazendo o exercício da aula de tratamente de erro deste curso##

├── teste.php
├── composer.json
├── composer.lock
└── vendor
    ├── autoload.php
    ├── composer
└── src
    ├── User.php

Testei inclusive essa classe com construct, sem, tirando namespace, utilizando comandos do composer (init, update, composer dumpautoload, composer dumpautoload -o, composer dump-autoload -o, instalei e desinstalei o composer, voltei e reassisti os primeiros módulos do curso de composer e nada..... Obs1: Em nenhum momento que eu tentei, o composer sequer incluiu dentro do arquivo autoload_classmap.php as minhas classes. Obs2, no início do curso, estava funcionando perfeitamente, eu instanciava objetos, fazia persistencia no sqlite, retirava dados baseado em id, fiz diversas querys, prepare stmt, etc, e depois começou a esse problema ocorrer, agora, nem algo simples assim está rodando, SOS. Algum dos Vinicios, Help ;-; (As imagens seguem a fio, de agora):

https://i.im.ge/2024/01/17/Yddig1.cmdComandosComposerPastaProjeto.png

https://i.im.ge/2024/01/17/Yddh0P.composerClassMap.png

https://i.im.ge/2024/01/17/YddUlp.ArquivoTestequeChamaClasse.png

https://i.im.ge/2024/01/17/YddIVq.ClasseUser.png

13 respostas

o COMPOSER.JSON E O COMPOSER.LOCK https://i.im.ge/2024/01/17/Yd7zWC.composer-lock.png

https://i.im.ge/2024/01/17/Yd7poq.jasonarquivo.png

Igor, tudo bem?

Ao meu ver o erro está em como você está definindo o namespace das suas classes.

Na classe User você usou o namespace: igorcardoso\projetopessoal. Mas no composer.json, você definiu de forma diferente.

Você deveria usar o namespace na classe User assim, da mesma forma que definiu no composer.json:

use namespace Igor\Cardoso

Dá uma olhada nesse capitulo aqui, vai te ajudar:

https://cursos.alura.com.br/course/php-composer/task/56140

Perfeito! Caraca, pra mim que poderíamos utilizar qualquer namespace antes do scr que iria funcionar, aprendi errado, pelo o menos massifiquei vários comandos em composer e afins kkkkk Só, surgiu outra situação agora Vinícius ;-;

https://i.im.ge/2024/01/18/Yq1RmL.classeCriadorConexao.png

https://i.im.ge/2024/01/18/Yq18Oc.novoerrodriver.png

Essa mensagem de driver não é referente aquilo lá do início de descomentar as linhas extension_dir = "ext" e extension=pdo_sqlite?

Isso, exatamente. Você já fez isso?

Se sim, e continua dando erro. Abre o terminal e digita 'php --ini', que vai mostrar a localização do arquivo php.ini no campo Loaded Configuration File: , se não mostrar a localização, deve mostrar none. Pode ser que este arquivo esteja com o nome errado, por exemplo: php.ini.ini

https://i.im.ge/2024/01/18/YqpawT.ini.jpg Tô só te dando trabalho hoje Vinicius, só quero prosseguir nos meus módulos ;-;

Certo, Igor. Fique tranquilo hehe!

Digite no terminal php -m e veja se a extensão do pdo_sqlite é listada.

Pior que não foi: https://i.im.ge/2024/01/18/YsChE1.semsqlite.png

Então verifica se você já descomentou a extensão do pdo_sqlite e se você está alterando no arquivo correto, conforme mostrou o caminho do arquivo php.ini no comando php --ini

Tudo ok nesse, eu só não fiz uma cópia desse php.ini como o Vinicius falou em um dos cursos, mas, isso não tem nada a ver (suponho): https://i.im.ge/2024/01/18/YsgrFa.phpini.jpg

solução!

Você deve renomear o arquivo php.ini-development para php.ini.

Vendo o seu print, você já possui um arquivo php.ini, veja:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeAbra ele com o bloco de notas e habilite as extensões.

Vou testar

Resolvido, eu peguei esse arquivo php.ini-development e movi para outra pasta, logo o comando php -m identificou a extensão e o código rodou perfeitamente, muuuuuuuuuuuuuuito obrigado pela paciência, tranquilidade e ajuda Vinicius, papai do céu de abençoe grandemente kkk

Que bom que resolveu! Bons estudos :)