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

Não encontra a classe

Estou tentando executar os primeiros passos, mas estou recebendo um erro que diz não encontrar umas das classes.

PHP Fatal error:  Uncaught Error: Class 'Alura\Doctrine\Helper\EntityManagerFactory' not found in /home/ramos/PhpstormProjects/Estudos/estudoDoctrine/teste.php:7
Stack trace:
#0 {main}
  thrown in /home/ramos/PhpstormProjects/Estudos/estudoDoctrine/teste.php on line 7

Quando executo o dump-autoload tudo acontece normal.

Esses são meus arquivos.

composer

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

Classe localizada dentro da pasta helper, que fica dentro da pasta src

<?php


namespace Alura\Doctrine\Helper;


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

class EntityManagerFactory
{
    /**
     * @throws 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);
    }
}

meu arquivo de teste

<?php

use Alura\Doctrine\Helper\EntityManagerFactory;

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

$entityManagerFactory = new EntityManagerFactory();

$entityManager = $entityManagerFactory->getEntityManager();

var_dump($entityManager-> getConnection());
4 respostas
solução!

Solucionei o problema

O erro estava no composer.json, eu especifiquei um pouco mais e isso resolveu meu problema.

{
    "require": {
        "doctrine/orm": "^2.6"
    },
    "autoload": {
        "psr-4": {
            "Alura\\Doctrine\\Helper\\": "src/Helper/"
        }
    }
}

Assim o autoload busca esse namespace dentro de "src/Helper/"

Estou com o mesmo problema Pedro. O que você fez para resolver?

Boa tarde André, solucionei de uma maneira que fosse funcional para mim, não sei se ela é a correta, mas pode te ajudar.

O erro estava no composer.json, eu especifiquei um pouco mais e isso resolveu meu problema.

{
    "require": {
        "doctrine/orm": "^2.6"
    },
    "autoload": {
        "psr-4": {
            "Alura\\Doctrine\\Helper\\": "src/Helper/"
        }
    }
}

Assim o autoload busca esse namespace dentro de "src/Helper/"

Valeu Pedro. Cara, eu fiz exatamente como o Vinicius fez, mas não estava indo de jeito nenhum mesmo rodando novamente o composer dumpautoload. Acabou que eu rodei umas duas vezes seguidas o dumpautoload e funcionou. Deveria funcionar de primeira, senão fica difícil de fazer o debug, né.. :/ De qualquer forma, valeu a força Pedro.