IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Doctrine] 1.2 - Fatal error: Class 'BaseSupergroup' not found


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut [Doctrine] 1.2 - Fatal error: Class 'BaseSupergroup' not found
    Bonjour à tous,

    Je viens d'installer doctrine 1.2.x (la dernière version 1.2), faute d'avoir droit à PHP 5.3. Et dans mon fichier de bootstrap du projet, j'ai mis ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    //Bootstapper Doctrine
    require_once(dirname(__FILE__) . '/lib/3rd/Doctrine/Doctrine.php');
     
    spl_autoload_register(array('Doctrine', 'autoload'));
    Doctrine_Core::loadModels(FRAMEWORK_ROOT . DIRECTORY_SEPARATOR . 'models');
     
    $doctrine_mgr = Doctrine_Manager::getInstance();
    $doctrine_mgr->setAttribute(Doctrine_Core::ATTR_AUTO_ACCESSOR_OVERRIDE, true);
    $doctrine_mgr->setAttribute(Doctrine_Core::ATTR_AUTOLOAD_TABLE_CLASSES, true);
    $doctrine_mgr->setAttribute(Doctrine_Core::ATTR_QUOTE_IDENTIFIER, true);
    $doctrine_mgr->setAttribute(Doctrine_Core::ATTR_MODEL_LOADING, Doctrine_Core::MODEL_LOADING_CONSERVATIVE);
     
    $db = $connMgr->getConn(); //Retourne une instance d'une classe héritant de PDO.
    $conn = Doctrine_Manager::connection($db);
    $conn->setOption('username', DB_USER);
    $conn->setOption('password', DB_PASS);
    Puis j'ai exécuté la commande suivante la première fois pour créer mes shémas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Doctrine_Core::generateModelsFromDb(FRAMEWORK_ROOT . DIRECTORY_SEPARATOR . 'models', array('default'), array('generateTableClasses' => true));
    Ce qui as créé les fichiers dans mon dossier /models à la base du projet:
    #$ ls -l * -R
    -rw-r--rwx 1 fmazerolle fmazerolle 298 2011-01-26 10:08 Group.php
    -rw-r--rwx 1 fmazerolle fmazerolle 344 2011-01-26 10:08 GroupTable.php
    -rw-r--rwx 1 fmazerolle fmazerolle 301 2011-01-26 10:08 Locale.php
    -rw-r--rwx 1 fmazerolle fmazerolle 348 2011-01-26 10:08 LocaleTable.php
    -rw-r--rwx 1 fmazerolle fmazerolle 328 2011-01-26 10:08 PageAssociation.php
    -rw-r--rwx 1 fmazerolle fmazerolle 384 2011-01-26 10:08 PageAssociationTable.php
    -rw-r--rwx 1 fmazerolle fmazerolle 307 2011-01-26 10:08 PageMeta.php
    -rw-r--rwx 1 fmazerolle fmazerolle 356 2011-01-26 10:08 PageMetaTable.php
    -rw-r--rwx 1 fmazerolle fmazerolle 295 2011-01-26 10:08 Page.php
    -rw-r--rwx 1 fmazerolle fmazerolle 340 2011-01-26 10:08 PageTable.php
    -rw-r--rwx 1 fmazerolle fmazerolle 304 2011-01-26 10:08 PageUrl.php
    -rw-r--rwx 1 fmazerolle fmazerolle 352 2011-01-26 10:08 PageUrlTable.php
    -rw-r--rwx 1 fmazerolle fmazerolle 307 2011-01-26 10:08 PageZone.php
    -rw-r--rwx 1 fmazerolle fmazerolle 356 2011-01-26 10:08 PageZoneTable.php
    -rw-r--rwx 1 fmazerolle fmazerolle 326 2011-01-26 11:59 Supergroup.php
    -rw-r--rwx 1 fmazerolle fmazerolle 364 2011-01-26 10:08 SupergroupTable.php
    -rw-r--rwx 1 fmazerolle fmazerolle 295 2011-01-26 10:08 User.php
    -rw-r--rwx 1 fmazerolle fmazerolle 340 2011-01-26 10:08 UserTable.php

    generated:
    total 48
    -rw-r--rwx 1 fmazerolle fmazerolle 2197 2011-01-26 10:08 BaseGroup.php
    -rw-r--rwx 1 fmazerolle fmazerolle 1829 2011-01-26 10:08 BaseLocale.php
    -rw-r--rwx 1 fmazerolle fmazerolle 2070 2011-01-26 10:08 BasePageAssociation.php
    -rw-r--rwx 1 fmazerolle fmazerolle 2017 2011-01-26 10:08 BasePageMeta.php
    -rw-r--rwx 1 fmazerolle fmazerolle 9886 2011-01-26 10:08 BasePage.php
    -rw-r--rwx 1 fmazerolle fmazerolle 1643 2011-01-26 10:08 BasePageUrl.php
    -rw-r--rwx 1 fmazerolle fmazerolle 1566 2011-01-26 10:08 BasePageZone.php
    -rw-r--rwx 1 fmazerolle fmazerolle 1736 2011-01-26 12:00 BaseSupergroup.php
    -rw-r--rwx 1 fmazerolle fmazerolle 4344 2011-01-26 10:08 BaseUser.php

    Le problème semble en fait apparaitre lorsque je tente de charger les modèles avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Doctrine_Core::loadModels(FRAMEWORK_ROOT . DIRECTORY_SEPARATOR . 'models');
    Retournera cette erreur:
    ( ! ) Fatal error: Class 'BaseSupergroup' not found in /var/www/cms/client1/framework/models/Supergroup.php on line 14
    Call Stack
    # Time Memory Function Location
    1 0.0001 326632 {main}( ) ../index.php:0
    2 0.0006 365596 require( '/var/www/cms/client1/framework/frontcontroller.php' ) ../index.php:6
    3 0.0014 398040 require( '/var/www/cms/client1/framework/bootstrap.php' ) ../frontcontroller.php:18
    4 0.0082 835396 Doctrine_Core::loadModels( ) ../bootstrap.php:103
    5 0.0250 2668304 require_once( '/var/www/cms/client1/framework/models/Supergroup.php' ) ../Core.php:668
    Pour rendre les choses un peu plus explicites, voici le contenu de /models/Supergroup.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php
    echo 'test';
    /**
     * Supergroup
     * 
     * This class has been auto-generated by the Doctrine ORM Framework
     * 
     * @package    ##PACKAGE##
     * @subpackage ##SUBPACKAGE##
     * @author     ##NAME## <##EMAIL##>
     * @version    SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $
     */
    class Supergroup extends BaseSupergroup
    {
     
    }
    Ps.: Oui, "test" s'affiche bien, signe que cette classe est bien autoloadé, mais pas celles contenues dans /models/generated/, dans ce cas-ci: BaseSupergroup.php

    J'ai aussi essayé de copier tout ce qui était dans generated/ vers models/, ca n'a rien changé.

    Bref, je ne comprend pas les choses suivantes:
    - À quoi servent les fichiers générés par le paramètre generateTableClasses => true
    - Pourquoi getTable('page') se retrouve à charger Supergroup
    - Pourquoi l'autoload n'arrive pas à fonctionner pour les fichier de type BaseXXXX, qu'ils soient dans le dossier generated ou pas.

    Toute réflexion est bienvenue !

  2. #2
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Un peu plus d'info:

    Si je commente la ligne Doctrine_Core::loadModels(..);, je n'ai évidemment plus l'erreur.
    Cependant lorsque je tente de charger des données, par exemple une page (qui n'a aucun lien avec Supergroup), j'ai droit à ceci:

    Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $page = Doctrine_Core::getTable('Page')->find(1);
    l'erreur
    Doctrine_ExceptionCouldn't find class Page

Discussions similaires

  1. [Doctrine] Fatal error: Class 'toto' not found
    Par Onime Records dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/01/2011, 19h29
  2. [1.x] Fatal error: Class 'PDO' not found
    Par phpiste dans le forum Symfony
    Réponses: 5
    Dernier message: 14/07/2010, 12h40
  3. [ZF 1.10] Fatal error: Class 'Zend_Config_Ini' not found
    Par absot dans le forum Zend Framework
    Réponses: 3
    Dernier message: 15/04/2010, 09h13
  4. Fatal error: Class SoapServer not found in
    Par l.laurent60 dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 21/05/2009, 10h12
  5. [MySQL] Fatal error: Class 'mysqli' not found in site
    Par rashid120 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/07/2008, 08h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo