Je suis nouveau cadre zend alors peut-être cette question est stupide ..Zend Framework classes de autoloading étendues par des modèles
J'ai une hiérarchie par défaut
Site
| --bootstrap.php
| --application
| --Modèles
| - item.php
| - ModelAbstract.php
| --...
intérieur item.php il y a
<?php
//TODO: trying to remove this require...
require_once('ModelAbstract.php');
class CF_Model_Flower extends CF_Model_Abstract
{
...
il y a
<?php
class CF_Model_Abstract
{
...
Et ma demande Inside 'ModelAbstract.php' Bootstrap. php ressemble à
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'CF',
'basePath' => dirname(__FILE__),
));
return $autoloader;
}
...
Si j'ai supprimé le 'require_once' à l'intérieur .php Je reçois
Fatal error: Class 'CF_Model_Abstract' not found in /Mysite/application/models/Item.php on line 6
Pourquoi? Et comment puis-je utiliser autoloading pour vivre sans cela require_once? En fait, le fait de renommer 'ModelAbstract.php' en 'Abstract.php' fonctionne. Quelqu'un peut-il m'expliquer pourquoi?
Thx
Vous m'avez donné un indice sérieux, je viens de renommer 'ModelAbstract.php' en 'Abstract.php' et ça a marché! Je n'arrive pas à comprendre pourquoi: -/ Je pensais que les espaces de noms utilisés pour préfixer les classes Zend_Application_Module_Autoloader vérifiaient à partir de 'basePath' certaines ressources par défaut, ie dans le répertoire 'models' il chercherait des classes comme "CF_Model_XXX". Je pensais que les noms de fichiers n'avaient aucun sens dans ce cas. –