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

Problemas com NameSpace

Olá, pessoal! Ao rodar o comando php teste.php, estou recebendo o seguinte erro

PHP Fatal error:  Uncaught Error: Class 'Cursos\Doctrine\Helper\EntityManagerFactory' not found in C:\Users\email\Área de Trabalho\Cursos\Doctrine\teste.php:6
Stack trace:
#0 {main}
  thrown in C:\Users\email\Área de Trabalho\Cursos\Doctrine\teste.php on line 6

Fatal error: Uncaught Error: Class 'Cursos\Doctrine\Helper\EntityManagerFactory' not found in C:\Users\email\Área de Trabalho\Cursos\Doctrine\teste.php:6
Stack trace:
#0 {main}
  thrown in C:\Users\email\Área de Trabalho\Cursos\Doctrine\teste.php on line 6

Provavelmente um erro de namespace que eu não estou conseguindo entender qual é. Estou utilizando o VS Code.

<?php

namespace Doctrine\Helper;

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

class EntityManagerHelper{

    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);

    }

}

?>
<?php

use Doctrine\Helper\EntityManagerFactory;
require_once __DIR__ .'/vendor/autoload.php';

$entityManagerFactory = new \Cursos\Doctrine\Helper\EntityManagerFactory();
$entityManager = $entityManagerFactory->getEntityManager();

var_dump($entityManager->getConnection());

?>

Alguém tem alguma dica?

2 respostas
solução!

Olá, Roberta.

Vi que você não fez os cursos de orientação a objetos que são pré-requisitos deste. Nele os namespaces são explicados.

No seu exemplo, você definiu sua classe com o namespace Doctrine\Helper mas está tentando instanciá-la com o namespace Cursos\Doctrine\Helper. Este é o problema.

Opa, Vinicius, valeu! Eu ia fazer o PHP MVC, mas o Doctrine era pré-requisito hahaha Então vou dar uma pausa aqui no Doctrine e dar uma olhada no POO!

Muitíssimo obrigada!

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