[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:
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:
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:
Citation:
#$ 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:
1 2
|
Doctrine_Core::loadModels(FRAMEWORK_ROOT . DIRECTORY_SEPARATOR . 'models'); |
Retournera cette erreur:
Citation:
( ! ) 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:
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 !