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

Erro ao realizar o teste

Boa tarde, pessoal!

Fui realizar o teste do Entity Manager e apareceu o seguinte erro:

Uncaught Error: Class 'Alura\Doctrine\Helper\Setup' not found in C:\xampp\htdocs\doctrine-alura\src\Helper\EntityManagerFactory.php:13 Stack trace: #0 C:\xampp\htdocs\doctrine-alura\teste.php(8): Alura\Doctrine\Helper\EntityManagerFactory->getEntityManager() #1 {main} thrown in C:\xampp\htdocs\doctrine-alura\src\Helper\EntityManagerFactory.php on line 13

Alguém já se deparou com esse problema?segue também o código do EntityManagerFaxtory


namespace Alura\Doctrine\Helper;

use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Tools\Setup;

class EntityManagerFactory {

    public function getEntityManager(): EntityManagerInterface {

        $rootDir = __DIR__ . '/../..';
        $config = Setup::createAnnotationMetaDataConfiguration([$rootDir . '/src'], true);

        $connection = [
            'driver' => 'pdo_sqlite',
            'path' => $rootDir . 'var/data/banco.sqlite'
        ];

        return EntityManager::create($connection, $config);

    }

}
6 respostas

José, esse erro só era pra acontecer se você não tivesse a linha use Doctrine\ORM\Tools\Setup;. Muito estranho. Troque de

$config = Setup::createAnnotationMetaDataConfiguration([$rootDir . '/src'], true);

Para

$config = \Doctrine\ORM\Tools\Setup::createAnnotationMetaDataConfiguration([$rootDir . '/src'], true);

Vê se assim funciona

Boa tarde, Vinícius!

Desculpe a demora da resposta. Eu troquei a linha de código que você indicou mas o erro persiste.

Eu estou fazendo estas aulas pelo NetBeans 12, faz alguma diferença?

Desde já agradeço.

Não faz diferença não, José.

Você pode compartilhar seu projeto completo no GitHub e me passar exatamente o comando que você está tentando executar? Vou tentar replicar aqui.

Boa tarde, Vinícius.

Segue o link do projeto:

git@github.com:josepaz1995/doctrine.git

O erro acontece quando tento executar o arquivo teste.php com o comando php teste.php no prompt.

solução!

José, removendo o namespace completo da linha 14 da factory tudo funciona. O use é respeitado. Com a linha

Doctrine\ORM\Tools\Setup::createAnnotationMetaDataConfiguration([$rootDir . '/src'], true);

O que ele tava fazendo era procurar a classe Alura\Doctrine\Helper\Doctrine\ORM\Tools\Setup, entendeu?

Screenshot do programa rodando

Entendi, funcionou aqui. Obrigado, Vinícius!