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

Fatal error/ Uncaught Error

Estou com esse problema na aula 5 de transações.

Fatal error: Uncaught Error: Interface "Alura\Pdo\Domain\Repository\StudentRepository" not found in C:\xampp\htdocs\ProjetoInicial\src\Infrastructure\Repository\PdoStudentRepository.php:10 Stack trace: #0 C:\xampp\htdocs\ProjetoInicial\vendor\composer\ClassLoader.php(480): include() #1 C:\xampp\htdocs\ProjetoInicial\vendor\composer\ClassLoader.php(346): Composer\Autoload\includeFile('C:\xampp\htdocs...') #2 C:\xampp\htdocs\ProjetoInicial\criar-turma.php(10): Composer\Autoload\ClassLoader->loadClass('Alura\Pdo\Infra...') #3 {main} thrown in C:\xampp\htdocs\ProjetoInicial\src\Infrastructure\Repository\PdoStudentRepository.php on line 10

O caminho para o repository esta correto e já executei o composer dumpautoload.

<?php

use Alura\Pdo\Domain\Model\Student;
use Alura\Pdo\Infrastructure\Persistence\ConnectionCreator;
use Alura\Pdo\Infrastructure\Repository\PdoStudentRepository;

require_once 'vendor/autoload.php';

$connection = ConnectionCreator::creatorConnection();
$studentRepository = new PdoStudentRepository($connection);

$connection->beginTransaction();

$aStudent = new Student(
    null, 
    'Marlon', 
    new DateTimeImmutable('1949-05-01')
);

$studentRepository->save($aStudent);

$anotherStudent = new Student(
    null,
    'Ronaldinho',
    new DateTimeImmutable('1999-12-12')
);

$studentRepository->save($anotherStudent);

$connection->commit();

Link do meu repositorio no GitHub: https://github.com/lbethuel/pdoStudent

6 respostas

Olá, altere o inicio de todas as chamadas e criação de namespaces para Alura\Pdo\Domain\Model\

Retificando Alura\Pdo\Domain\

Bom dia, Andre! Alterei e continua dando erro. Os outros arquivos estão rodando certinho.

Fatal error: Uncaught Error: Interface "Alura\Pdo\Domain\Repository\StudentRepository" not found in C:\xampp\htdocs\ProjetoInicial\src\Infrastructure\Repository\PdoStudentRepository.php:10 Stack trace: #0 C:\xampp\htdocs\ProjetoInicial\vendor\composer\ClassLoader.php(480): include() #1 C:\xampp\htdocs\ProjetoInicial\vendor\composer\ClassLoader.php(346): Composer\Autoload\includeFile('C:\xampp\htdocs...') #2 C:\xampp\htdocs\ProjetoInicial\criar-turma.php(10): Composer\Autoload\ClassLoader->loadClass('Alura\Pdo\Domai...') #3 {main} thrown in C:\xampp\htdocs\ProjetoInicial\src\Infrastructure\Repository\PdoStudentRepository.php on line 10

solução!

Olá,

Estruture seu projeto da seguinte maneira:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade e só para ficar no padrão, altera o nome do arquivo StudenteRepository.php para StudentRepository.php

Lucas, sua estrutura de pastas não está batendo com o autoloader definido no composer.json. Confere direitinho como está a definição de autoload e ajusta a estrutura de pastas pros namespaces ficarem corretos e o autoloader funcionar. :-)

Obrigado, André e Vinicius! Organizei a estrutura de pastas e percebi que não tinha chamado o autoload na conexão. Agora está tudo OK.

require_once 'vendor/autoload.php';

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software