Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-03-2009 13:52:46

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

[Résolu][Zend_Loader][1.6]Chargement d'une classe

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à :

Code:

require_once 'Zend/Loader.php';

Zend_Loader::registerAutoload();

Voici le code que j'emploie dans ma vue :

Code:

//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)


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#2 06-03-2009 14:00:46

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

le registerAutoload remplace les "_" dans le noms des class par des "/"

Tu dois donc faire :

Code:

$date = new Date_Manager();

Hors ligne

 

#3 06-03-2009 14:05:07

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

Bonjour,

As-tu bien ajouté le chemin vers ta librairie dans les include_path ?


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#4 06-03-2009 14:09:00

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

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)


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#5 06-03-2009 14:27:20

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

Tas bien mis dans le include_patch le chemin vers *** ?

Hors ligne

 

#6 06-03-2009 14:29:31

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

Code:

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());

Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#7 06-03-2009 14:54:53

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

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+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#8 06-03-2009 15:34:05

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

Salut mikaelkael,

J'ai modifié ma classe comme suit :

Code:

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 :

Code:

$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)


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#9 06-03-2009 16:28:55

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

Hello,

Si tu étends Date, la classe Date doit aussi être dans l'include_path.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#10 06-03-2009 16:36:01

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

JE l'ai rajouté dans mon include_path et rien n'y fais...

Code:

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)


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#11 06-03-2009 17:41:52

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

Hello,

Si c'est Zend_Date que tu étends, il faut que tu mettes :

Code:

class Date_Manager extends Zend_Date

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#12 11-03-2009 10:05:27

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

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

Code:

$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)


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#13 11-03-2009 14:09:15

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

c'est simple, tu dois ajouter le nom de ta société au nom de ta classe

Code:

$date = new MaSociete_Date_Manager();

Hors ligne

 

#14 11-03-2009 15:05:24

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Résolu][Zend_Loader][1.6]Chargement d'une classe

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...


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages