5
respostas

Classe não encontra - Namespace.

Eu já olhei os outros tópicos a respeito e tentei todas as possibilidades, mas ainda assim não funciona. Poderiam dar uma olhada e ver se tem algo que não entendi ou está errado? Eu fiz o curso de namespace tbm. Entendo o conceito mas não consegui fazer funcionar.

Estrutura das Pastas do Projeto

composer.json

{
    "require": {
        "symfony/cache": "^5.3",
        "doctrine/orm": "^2.10"
    },


    "autoload": {

    "psr-4": {
        "Doctrine\\" : "src/"      
    }

                 }

 }

Classe

<?php

namespace Doctrine\Helper;

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



class EntityManagerFactory {

  public function getEntityManger(): EntityManagerInterface
  {

   $rootDir = __DIR__.'/../..';
   $config = Setup::createAnnotationMetadataConfiguration(

       [$rootDir. '/src'],
       isDevMode: true

   );

    $connection = [ 'driver' => 'pdo.sqlite',

                  'path' => $rootDir .'/var/data/banco.sq'] ;

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

  }

}

Teste

<?php 


use Doctrine\Helper\EntityManagerFactory;

require_once __DIR__. '/vendor/autoload.php';


$entityManagerFactory = new  EntityManagerFactory();
$entityManager = $entityManagerFactory->getEntityManger();

var_dump($entityManager->getConnection);


Erro:

PHP Fatal error:  Uncaught Error: Class "Doctrine\Helper\EntityManagerFactory" not found in C:\Users\rlirio\Documents\Doctrine\teste.php:9
Stack trace:
#0 {main}
  thrown in C:\Users\rlirio\Documents\Doctrine\teste.php on line 9

Fatal error: Uncaught Error: Class "Doctrine\Helper\EntityManagerFactory" not found in C:\Users\rlirio\Documents\Doctrine\teste.php:9
Stack trace:
#0 {main}
  thrown in C:\Users\rlirio\Documents\Doctrine\teste.php on line 9
5 respostas

Alguém conseguiu resolver esse problema ? estou com a mesma situação ! até reiniciei o curso do 0 para ver onde eu estava errando

c:\Estudos\doctrineaula1>php teste.php PHP Fatal error: Uncaught RuntimeException: Setup tool cannot configure caches without doctrine/cache 1.11 or symfony/cache. Please add an explicit dependency to either library. in C:\Estudos\doctrineaula1\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Setup.php:162 Stack trace:

#0 C:\Estudos\doctrineaula1\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Setup.php(138): Doctrine\ORM\Tools\Setup::createCacheInstance()

#1 C:\Estudos\doctrineaula1\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Setup.php(122): Doctrine\ORM\Tools\Setup::createCacheConfiguration()

#2 C:\Estudos\doctrineaula1\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Setup.php(70): Doctrine\ORM\Tools\Setup::createConfiguration()

#3 C:\Estudos\doctrineaula1\src\Helper\EntityManagerFactory.php(20): Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration()

#4 C:\Estudos\doctrineaula1\teste.php(8): Alura\Doctrine\Helper\EntityManagerFactory->getEntityManager()

#5 {main} thrown in C:\Estudos\doctrineaula1\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Setup.php on line 162

c:\Estudos\doctrineaula1>

Não tive ajuda aqui. Aparentemente a comunidade não é tãoooo solícita assim. Mas o que funcionou pra mim, depois de ter checado que eu não tinha errado nada foi rodar o dumpautoload mais de uma vez. Se isso é fundamental para o funcionamento não ficou muito claro no curso, eu entendi que se tratava de um teste. Mas faz isso... umas 3 vezes.

Estou com o mesmo erro, não consigo encontrar EntityManager.

Por algum motivo depois que entrei na pasta vendor/doctrine/orm/lib/Doctrine/ORM e abri o arquivo da classe EntityManager. A classe foi reconhecida e o programa carregou. Fica como dica pra quem estiver o mesmo erro.

Eu tive o problema no linux por conta do case-sensitive, no windows rodou normal depois de executar o compose dump-autoload.

O composer dump-autoload não é um teste e nem é opcional, ele faz com que os arquivos sejam indexados no autoloader

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