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

Não encontra minha classe EntityMangerFactory

Até vi alguns erros parecidos aqui no fórum, mas pelo visto não correspondem com o meu. O erro que encontro quando php teste.php é:

Fatal error: Uncaught Error: Class 'Daluz\Doctrine\Helper\EntityManagerFactory' not found in C:\Users\franc\OneDrive\Documents\Alura\PHP\doctrine\teste.php:6

este é o código da minha EntityManagerFactory.php:

<?php


namespace Daluz\Doctrine\Helper;


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

class EntityManagerFactory
{
/**
 * @return EntityManagerInterface
 * @throws \Doctrine\ORM\ORMException
 */
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);
}
}

Este é o meu arquivo composer:

{
"require": {
    "doctrine/orm": "^2.7"
},
"autoload": {
    "psr-4": {
        "Daluz\\Doctrine\\": "src/"
    }
}
}

Este é o meu arquivo teste.php

<?php

use Daluz\Doctrine\Helper\EntityManagerFactory;

require_once __DIR__ . '/vendor/autoload.php';
$entityManagerFactory = new EntityManagerFactory();
$entityManger = $entityManagerFactory->getEntityManager();
var_dump($entityManger->getConnection());

o caminho dos meus arquivos são:

doctrine/src/Helper/EntityManagerFactory.php

doctrine/var/data

doctrine/teste.php

obs: não tive nenhum erro durante as instalações com o composer e meu pdo está habilitado no ini.php

5 respostas
solução!

Aparentemente tudo está certinho, Francis.

Vou dar uma olhada com mais calma aqui, mas tenta gerar o autoloader de novo pra garantir:

composer dump-autoloader

Beleza, vou tentar. obrigado

aparece esse erro:

[Symfony\Component\Console\Exception\CommandNotFoundException] Command "dump-autoloader" is not defined.

Did you mean one of these? dump-autoload dumpautoload

esqueci de instalar alguma coisa?

Não, Francis. Eu que digitei errado aqui. É só seguir a recomendação que apareceu aí e digitar o comando certo que é dump-autoload ou dumpautolaod.

Rodei ele de novo e deu certo o código. obrigado professor

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