entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Class 'Doctrine\ORM\Tools\Setup' not found - PHP + DOCTRINE

Hola. No llevo mucho tiempo con PHP + DOCTRINE Y me ha surgido un error. Os presento el problema:
El error que me da es "Class 'Doctrine\ORM\Tools\Setup' not found".
La clase Doctrine\ORM\Tools\Setup la uso en la clase EntityManagerSta, lo que no entiendo es porque me da el error
de class not found si esta bien puesto use Doctrine\ORM\Tools\Setup.
Gracias.

Tengo la siguiente estructura de directorios:

privado\ajax\categorias.php

privado\doctrine\data
privado\doctrine\data\CategoriaDataImpl.php
privado\doctrine\data\EntityManagerSta.php
privado\doctrine\src
privado\doctrine\vendor

Codigo del archivo categorias.php

require_once "/../doctrine/data/CategoriaDataImpl.php";

$categoriaData = new CategoriaDataImpl();

Codigo de la clase CategoriaDataImpl

require_once "/./CategoriaData.php";
require_once "/./EntityManagerSta.php";

class CategoriaDataImpl implements CategoriaData{
    private $entityManager;

    function __construct() {

        $this->entityManager = EntityManagerSta::crearEntityManager();

    }
 }

Codigo de la clase EntityManagerSta

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
class EntityManagerSta{

    static function crearEntityManager(){

        $isDevMode = true;

            $config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."../src"), $isDevMode);
        $conn = array(
            'driver'   => 'pdo_mysql',
            'host'     => 'localhost',
            'dbname'   => 'farmacia',
            'user'     => 'root',
            'password' => ''
            );

            $entityManager = EntityManager::create($conn, $config);
        return $entityManager;
    }

}

1 Respuesta

1voto

white Puntos75880

Me parece que te falta cargar las clases, estas usando composer? talvez olvidaste incluir el fichero autoload.php, no estas usandolo? intenta entonces:

crea un fichero composer.json:

{
    "name": "vendor/nombre",
    "authors": [
        {
            "name": "Mi nombre",
            "email": "[email protected]"
        }
    ],
    "require": {}
}

despues usa el comando:

php C:\ProgramData\ComposerSetup\bin\composer.phar require "doctrine/orm"

C:\ProgramData\ComposerSetup\bin\composer.phar puede variar dependiendo de tu sistema operativo/carpeta de instalacion.

en tu fichero, donde dispones la clase EntityManagerSta antes de

use Doctrine\ORM\Tools\Setup;

agrega esto:

require_once('../../Vendor/autoload.php'); # \privado\Vendor\

http://doctrine-orm.readthedocs.org/en/latest/reference/configuration.html

saludos!

0voto

Pepers comentado

Cierto, me faltaba cargar la clase. Al agregar como has dicho
require_once('/../vendor/autoload.php'); se ha solucionado el problema.
Muchas Gracias.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta