2013-10-02 5 views
1

Je vais au guide de démarrage de Doctrine et je suis bloqué au début à cause de "Produit de classe" introuvable dans /var/www/test/product-create.php sur la ligne 6 " :Doctrine Entity "Classe non trouvée"

<?php 
require_once 'bootstrap.php'; 

$newProductName = $argv[1]; 

>>>>> $product = new Product(); 
$product->setName($newProductName); 

$entityManager->persist($product); 
$entityManager->flush(); 

echo sprintf('Created Product with ID %d' . PHP_EOL, $product->getId()); 

Comme écrit dans le guide, j'ai la classe produit sous répertoire « ./src » dans mon projet. S'il vous plaît, aidez-moi, parce que je veux commencer à utiliser Doctrine sans Symfony et je ne peux pas aller plus loin.

Voici mon bootstrap.php:

<?php 
use Doctrine\ORM\Tools\Setup; 
use Doctrine\ORM\EntityManager; 

use Symfony\Component\Yaml\Parser; 

require 'vendor/autoload.php'; 

$yaml = new Parser(); 

$parameters = $yaml->parse(file_get_contents(__DIR__ . '/parameters.yml')); 
$parameters = $parameters['parameters']; 

$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__ . '/src'), $parameters['debug']); 

$conn = array 
    (
     'host'  => $parameters['database_host'], 
     'port'  => $parameters['database_port'], 
     'driver' => $parameters['database_driver'], 
     'user'  => $parameters['database_user'], 
     'password' => $parameters['database_password'], 
     'dbname' => $parameters['database_name'] 
    ); 

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

Et ceci est mon product.php:

<?php 
/** 
* @Entity 
* @Table (name="products") 
**/ 
class Product 
{ 
    /** 
    * @Id 
    * @Column(type="integer") @GeneratedValue 
    **/ 
    protected $id; 

    /** 
    * @Column(type="string") 
    **/ 
    protected $name; 

    public function getId() 
    { 
     return $this->id; 
    } 

    public function getName() 
    { 
     return $this->name; 
    } 

    public function setName($name) 
    { 
     $this->name = $name; 
    } 
} 

Merci à tous à l'avance!

Répondre

4

Je ne vois pas où vous incluez la classe de produit. Vous devez écrire en haut de votre fichier

require_once 'patch_to_your_class/Product.php';

ou d'utiliser un autochargeur pour les classes.

+0

Serge, tu as parfaitement raison! Mais je ne comprends pas, pourquoi les mainteneurs de Doctrine ne l'ont pas inclus dans leur documentation? Merci pour l'indice! –

2

Je viens de tomber sur votre question maintenant, et nous espérons que vous avez trouvé une réponse, mais pour aider les autres, vous devez vous assurer que vous avez inclus dans votre composer.json les éléments suivants

"autoload": { 
    "psr-0": {"": "src/"} 
} 

Ou inclure manuellement comme @ Сергей Студеникин suggéré