Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-01-2009 19:19:22

masseur
Membre
Date d'inscription: 21-01-2009
Messages: 11

Autoload et Include

J'essaye de suivre ce tuto http://www.itanea.com/blog/2008/05/04/l … -framework

Comme vous vous en doutez, je galère grave!!!!!

1)Quand je cré la classe suivante class LoginForm extends Zend_Form
{, ou zend préconise t'il de placer ses classes perso?

2)Dois je ensuite l'inclure,  ou  alors la méthode suivante dans ma class me permet d'éviter son inclusion

Code:

public static function autoload() {
        include ('LoginForm.php');
    }

Je précise que dans mon fichier boostrap.php j'ai ceci Zend_Loader::registerAutoload();

Merci par avance.

EDIT admin: penser à un titre clair, merci.

Dernière modification par masseur (23-01-2009 14:35:31)

Hors ligne

 

#2 22-01-2009 19:34:33

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: Autoload et Include

Il faut mettre tes chemins vers tes classes avec set_include_path :
http://ch2.php.net/manual/fr/function.s … e-path.php

La méthode autoload() est utilisée si tu crées ta propre classe de chargement. Ce qui ne doit pas être le cas.

Il faudrait que tu commences par faire le quickstart ou un tutorial sur l'utilisation de l'arborescence Zend et de ses quelques bases sinon tu vas jamais t'en sortir. smile


Quelques tutoriaux Zend Framework !

Hors ligne

 

#3 22-01-2009 19:58:28

masseur
Membre
Date d'inscription: 21-01-2009
Messages: 11

Re: Autoload et Include

keilnoth a écrit:

Il faut mettre tes chemins vers tes classes avec set_include_path :
http://ch2.php.net/manual/fr/function.s … e-path.php

La méthode autoload() est utilisée si tu crées ta propre classe de chargement. Ce qui ne doit pas être le cas.

Il faudrait que tu commences par faire le quickstart ou un tutorial sur l'utilisation de l'arborescence Zend et de ses quelques bases sinon tu vas jamais t'en sortir. smile

J'ai acheté un livre pour cela, mais je le trouve mal foutu sad
J'ai plus ou moins compris l'arborescence mais j'ai rien trouvé sur les classes persos.

Par défaut j'ai ceci.

set_include_path('.' . PATH_SEPARATOR . '../library' . PATH_SEPARATOR . '../application/default/models/' . PATH_SEPARATOR . get_include_path());

Imagions que je créé un répertoire MonAppli dans library avec à l'intérieur Maclass.php

Quel include devra t'on faire par rapport à la config de base?
Si j'ai bien compris faut se baser par rapport au fichier index.php.

Donc je fais cet include : include ('../library/MonAppli/Maclass.php');
J'ai bon?
Merci par avance.

Après cela , je pourrais me lancer dans une petite application de test wink

Dernière modification par masseur (22-01-2009 20:03:10)

Hors ligne

 

#4 22-01-2009 20:12:25

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: Autoload et Include

Si tu utilises Zend_Loader::registerAutoload();  alors tu ne dois faire aucun include.

L'autoloader de Zend ira chercher tes classes dans tes répertoires :

../library
et
../application/default/models/

Simplement, il faut les nommer correctement. Ta classe ../library/MonAppli/Maclass.php devrait être écrite ainsi :

<?php
class MonAppli_Maclass {}

Le _ permet de séparer les répertoires et la dernière partie du nom de ta classe s'écrit comme le fichier PHP qui la contient.

Exemple :
../application/default/models/View/Helper/IsAllowed.php


<?php
class View_Helper_IsAllowed extends Zend_View_Helper_Abstract {
}

Zend_View_Helper_Abstract se trouve dans :

../library/Zend/View/Helper/Abstract.php

C'est super simple non ? smile
Je crois que je vais faire un tutorial vu le nombre de fois que la question est posée. smile


Quelques tutoriaux Zend Framework !

Hors ligne

 

#5 22-01-2009 20:32:02

masseur
Membre
Date d'inscription: 21-01-2009
Messages: 11

Re: Autoload et Include

Merci keilnoth.

Voila qui me simplifie la tache.

Hors ligne

 

#6 23-01-2009 14:43:13

masseur
Membre
Date d'inscription: 21-01-2009
Messages: 11

Re: Autoload et Include

Une autre petite question.

Je veux créer un helper qui se situe pour moi dans C:\wamp\www\loginetauh\application\default\helpers.

Ce repertoire est donc en dehors de ../library et ../application/default/models/

J'ai rajouté ceci dans mon boostrap

Code:

Zend_Controller_Action_HelperBroker::addPrefix('../application/default/helpers');

Et ma classe qui est comme ceci

Code:

class Profile
{

}

Le fichier Profile.php est bien dans ./application/default/helpers

Bien entendu cela ne marche pas.

exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'Profile' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/;C:/wamp/www/loginetauh//application/default/views\helpers/' in C:\wamp\ZendFramework-1.7.2\library\Zend\Loader\PluginLoader.php:386 Stack trace: #0 C:\wamp\ZendFramework-1.7.2\library\Zend\View\Abstract.php(1067): Zend_Loader_PluginLoader->load('Profile') #1 C:\wamp\ZendFramework-1.7.2\library\Zend\View\Abstract.php(545): Zend_View_Abstract->_getPlugin('helper', 'Profile') #2 C:\wamp\ZendFramework-1.7.2\library\Zend\View\Abstract.php(312): Zend_View_Abstract->getHelper('Profile') #3 [internal function]: Zend_View_Abstract->__call('Profile', Array) #4 C:\wamp\www\loginetauh\application\default\views\scripts\login\index.phtml(3): Zend_View->Profile() #5 C:\wamp\ZendFramework-1.7.2\library\Zend\View.php(107): include('C:\wamp\www\log...') #6 C:\wamp\ZendFramework-1.7.2\library\Zend\View\Abstract.php(787): Zend_View->_run('C:\wamp\www\log...') #7 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Action\Helper\ViewRenderer.php(902): Zend_View_Abstract->render('login/index.pht...') #8 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Action\Helper\ViewRenderer.php(923): Zend_Controller_Action_Helper_ViewRenderer->renderScript('login/index.pht...', NULL) #9 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Action\Helper\ViewRenderer.php(962): Zend_Controller_Action_Helper_ViewRenderer->render() #10 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Action\HelperBroker.php(276): Zend_Controller_Action_Helper_ViewRenderer->postDispatch() #11 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Action.php(513): Zend_Controller_Action_HelperBroker->notifyPostDispatch() #12 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Dispatcher\Standard.php(285): Zend_Controller_Action->dispatch('indexAction') #13 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #14 C:\wamp\www\loginetauh\application\bootstrap.php(23): Zend_Controller_Front->dispatch() #15 C:\wamp\www\loginetauh\public\index.php(8): require('C:\wamp\www\log...') #16 {main}

Des idées?

Merci

Dernière modification par masseur (23-01-2009 14:47:36)

Hors ligne

 

#7 23-01-2009 15:42:05

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: Autoload et Include

Mauvaise méthode, mauvais nom de classe... smile


Quelques tutoriaux Zend Framework !

Hors ligne

 

#8 23-01-2009 15:49:52

masseur
Membre
Date d'inscription: 21-01-2009
Messages: 11

Re: Autoload et Include

J'ai fait tout simplement cela,

Code:

class Zend_View_Helper_Profile

avec Profile.php dans C:\wamp\www\loginetauh\application\default\views\helpers et la à priori ça marche.

Je ne comprends d'ailleurs pas pourquoi cela marche car à priori Default/View/Helpers/ (C:\wamp\www\loginetauh\application\default\views\helpers) ne fait pas parti du include_path non?

Quelle est la différence entre default\helpers et default\views\helpers.
Le deuxième est la vue du helper que l'on aura codé dans le premier chemin( si nécessaire)?

Hors ligne

 

#9 23-01-2009 15:54:15

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: Autoload et Include

Il y a deux types de helpers. Les helpers de vue et les helpers d'action. C'est probablement la différence entre tes deux répertoires.


Quelques tutoriaux Zend Framework !

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