Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'ai un petit souci. Je suis entrain de créer une première application avec Zend_Application. Je voudrais utiliser des librairies que j'avais créées sur d'autres projets.
Dans mes autres projets ces librairies se trouvaient dans un repertoire lib au même niveau que ZF.
Soit : lib/Zend pour le ZF et lib/App pour mes librairies perso.
J'ai fais la même chose sans omettre dans le index.php de faire le set_include_path qui va bien pour inclure mon dossier lib dans le path.
Nouveauté par rapport à mes anciens projets, je vais utiliser l'autoloader qui, d'après ce que j'ai compris, est nativement initialisé dans Zend_Application.
Si j'affiche pour include_path (avec la fonction get_include_path), je retrouve bien mon dossier dans la liste.
La librairie Zend est bien accessible et quand j'appelle des objets Zend (sans avoir fait un require ou Zend_Loader) ça fonctionne bien.
Le problème vient que quand je crée une class à partir d'une de mes class perso j'ai un message d'erreur comme quoi la class n'existe pas. Et que si je charge ma class au préalable avec un require_once ou un Zend_Loader ça fonctionne.
Fonctionne :
Zend_Loader::loadClass('App_Model'); class Default_Model_Essai extends App_Model { }
Ne fonctionne pas :
class Default_Model_Essai extends App_Model { }
Le message est, quand ça fonctionne pas,
Fatal error: Class 'App_Model' not found in G:\test\portail\application\modules\default\models\Essai.php on line 2
Bien entendu, il existe un fichier Model.php dans le dossier lib/App et la class définie dans ce fichier s'appelle bien App_Model
Voila, si vous avez une idée pourquoi les class de Zend sont reconnues et pas celles de App, je suis preneur.
Hors ligne
Une petite précision, si je ne fais pas appelle à ma class Default_Model_Essai, je n'ai pas le message d'erreur (ce qui est normal) mais j'ai bien ma page qui s'affiche comme il faut.
Hors ligne
as tu ajouté le namespace App_ à ton projet (bootstrap ou .ini)
Hors ligne
Et pour le faire c'est le code suivant :
Zend_Loader_Autoloader::getInstance()->registerNamespace('App_');
A+, Philippe
Hors ligne
Ok, ça veut dire que seul le namespace Zend_ est présent par défaut et je ne l'avais pas vu !!
Merci ça fonctionne nickel.
J'ai juste préféré le mettre dans le application.ini
autoloaderNamespaces[] = "App_"
C'est vraiment excellent cette nouvelle façon de faire avec Zend_Application. Je trouve ça vraiment beaucoup plus clair, maintenable, portable, ...
PS : je peux pas mettre [résolu] dans le titre : il doit être trop grand
Dernière modification par Damien (22-04-2010 16:26:34)
Hors ligne
Pages: 1