Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous.
Je suis nouveau sur Zend et j'apprécie l'utilité de certaines fonction de ce framework, notamment l'autoload. Mais ce dernier me pose un petit soucis.
Dans une de mes vues, je fais appel à une classe qui se trouve dans une librairie développée par ma société. Or, j'ai une erreur qui me dit ceci :
Warning: Zend_Loader::include_once(DateManager.php) [zend-loader.include-once]: failed to open stream: No such file or directory in C:\projet\oura_v16\library\Zend\Loader.php on line 83
J'ai bien activé l'autoload dans mon boostrap par le biais de ce code là :
require_once 'Zend/Loader.php'; Zend_Loader::registerAutoload();
Voici le code que j'emploie dans ma vue :
//require_once('****/Date/Manager.php'); $date = new DateManager();
Quelqu'un aurait-il une idée sur le pourquoi du comment de cette erreur ?
Merci de m'avoir consacré du temps à me lire.
Cordialement,
Nikko
Dernière modification par Nikko (11-03-2009 13:24:00)
Hors ligne
le registerAutoload remplace les "_" dans le noms des class par des "/"
Tu dois donc faire :
$date = new Date_Manager();
Hors ligne
Bonjour,
As-tu bien ajouté le chemin vers ta librairie dans les include_path ?
A+ benjamin.
Hors ligne
Merci Guillhomme, j'essaye ta solution.
@Delprog : Oui, j'ai bien spécifié le chemin.
Edit : Ta solution ne fonctionne pas.
Voici l'arborescence de ma librairie :
library
|
|-***
|-Auth
|-Date
|-CalendarHelper.php
|-CalendarPeriodHelper.php
|-Manager.php
|-MonthsMap.php
|-Db
|-View
|-Zend
Je souhaite donc accéder à ***/Date/Manager.php et utiliser la classe DateManager.
Dernière modification par Nikko (06-03-2009 14:15:50)
Hors ligne
Tas bien mis dans le include_patch le chemin vers *** ?
Hors ligne
set_include_path('.' . PATH_SEPARATOR . './library/****' . PATH_SEPARATOR . './library' . PATH_SEPARATOR . './application/models' . PATH_SEPARATOR . './application/plugins' . PATH_SEPARATOR . './application/util' . PATH_SEPARATOR . get_include_path());
Hors ligne
Hello,
Nikko a écrit:
Je souhaite donc accéder à ***/Date/Manager.php et utiliser la classe DateManager.
Non ce sera la classe Date_Manager si elle est dans ***/Date/Manager.php, si tu veux qu'elle s'appelle DateManager, tu la mets dans ***/DateManager.php
A+
Hors ligne
Salut mikaelkael,
J'ai modifié ma classe comme suit :
class Date_Manager extends Date { private $holidays = array(); function Date_Manager($date=null) { return parent::date($date); } .... }
Dans ma vue, j'appelle désormais la classe comme ceci :
$date = new Date_Manager();
Et je n'ai pas changé le chemin. Mais j'ai toujours mon erreur.
Warning: require_once(Date.php) [function.require-once]: failed to open stream: No such file or directory in C:\projet\oura_v16\library\***\Date\Manager.php on line 3
Fatal error: require_once() [function.require]: Failed opening required 'Date.php' (include_path='.;./library/***;./library;./application/models;./application/plugins;./application/util;.;c:\php\includes') in C:\projet\oura_v16\library\****\Date\Manager.php on line 3
Dernière modification par Nikko (06-03-2009 15:38:42)
Hors ligne
Hello,
Si tu étends Date, la classe Date doit aussi être dans l'include_path.
A+
Hors ligne
JE l'ai rajouté dans mon include_path et rien n'y fais...
set_include_path('.' . PATH_SEPARATOR . './library/***' . PATH_SEPARATOR . './library' . PATH_SEPARATOR . './library/Zend/Date.php' . PATH_SEPARATOR . './application/models' . PATH_SEPARATOR . './application/plugins' . PATH_SEPARATOR . './application/util' . PATH_SEPARATOR . get_include_path());
Dernière modification par Nikko (11-03-2009 15:05:40)
Hors ligne
Hello,
Si c'est Zend_Date que tu étends, il faut que tu mettes :
class Date_Manager extends Zend_Date
A+
Hors ligne
Je n'arrive toujours pas charger mon fichier.
Je fais un rappel :
J'instancie la classe Date_Manager(), qui étend Zend_Date, dans ma vue /views/scripts/saisies/index.phtml
$date = new Date_Manager();
. Je ne fais pas d'include car Zend_Loader::registerAutoload(); est chargé.
La classe Date_Manager() se trouve dans une librairie développée par ma société et se trouve dans /library/***/Date/Manager.php
Les erreurs retournées sont les suivantes :
Warning: require_once(Date.php) [function.require-once]: failed to open stream: No such file or directory in C:\projet\oura_v16\library\***\Date\Manager.php on line 3
et
Fatal error: require_once() [function.require]: Failed opening required 'Date.php' (include_path='.;./library/***;./library;./library/Zend/Date.php;./application/models;./application/plugins;./application/util;.;c:\php\includes') in C:\projet\oura_v16\library\***\Date\Manager.php on line 3
Je ne comprends vraiment pas pourquoi j'ai cette erreur.
Cordialement,
Nikko
Edit : J'ai trouvé la solution, et j'ai un peu honte de ne pas l'avoir vu avant... Dans ma classe DateManager, je faisais un require_once 'Date.php'; Je l'ai tout simplement supprimé et désormais, cela fonctionne... Merci encore de votre aide.
Dernière modification par Nikko (11-03-2009 13:23:39)
Hors ligne
c'est simple, tu dois ajouter le nom de ta société au nom de ta classe
$date = new MaSociete_Date_Manager();
Hors ligne
Merci pour ta proposition. En fait, le problème ne venait pas du chemin ni même du nom de ma classe. Avant de créer ma classe j'importais un fichier Date.php qui faisait référence à la librairie Pear que je n'avais pas mis dans mon include path...
Hors ligne
Pages: 1