IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Les controllers et leurs actions


Sujet :

Zend Framework PHP

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Points : 45
    Points
    45
    Par défaut Les controllers et leurs actions
    Bonjour,

    J'ai passé une bonne année dans le monde RoR et redécouvre le php grace au framework Zend

    J'aurais eu quelques petites questions touchant les controllers et leurs actions.

    Selon mon code ci-dessous, je voudrais lancer une fonction (action) du style refresh de la cache lorsque j'appelle une action (ici index).

    1. la fonction "refreshCacheAction", suis-je obligé de mettre "Action" à la fin sachant qu'elle ne sera pas appelée directement?
    2. Est-ce correct de mettre directement les fonctions en public/private?
    3. Dans ce cas là, y a-t-il un autre endroit pour mettre la fonction "refreshCacheAction"? Dans un helper?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    class CoreController extends Zend_Controller_Action 
    {
      public function indexAction(){
        refreshCacheAction();
      }
     
      private function refreshCacheAction(){
        [...]
      }
    [...]

  2. #2
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Bonjour,

    Je suis pas utilisateur du Zend Framework, sûrement une erreur de ma part, mais bon je pense pouvoir t'aider un peu.

    Je ne vois pas trop pourquoi tu as fait une fonction IndexAction qui à pour seul but d'appeler refreshCacheAction ?

    Pourquoi ne pas déclarer directement la fonction refreshCacheAction en tant que public ?

    Cordialement Inazo.

  3. #3
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Personnellement, mais ce n'est sans doute aps la bonne méthode, je mets mes petites fonctions sans le "Action" (sinon ta fonction pourra être appelée via l'url) en private. Je n'ai pas de soucis, mais je ne trouve aps ça super propre,c 'est sur.

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par Inazo Voir le message
    Bonjour,

    Je suis pas utilisateur du Zend Framework, sûrement une erreur de ma part, mais bon je pense pouvoir t'aider un peu.

    Je ne vois pas trop pourquoi tu as fait une fonction IndexAction qui à pour seul but d'appeler refreshCacheAction ?

    Pourquoi ne pas déclarer directement la fonction refreshCacheAction en tant que public ?

    Cordialement Inazo.
    Merci pour la réponse rapide. Ben en fait, la j'ai simplifier au maximum, en fait dans la fonction indexAction, je fais d'autre truc.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par haltabush Voir le message
    Personnellement, mais ce n'est sans doute aps la bonne méthode, je mets mes petites fonctions sans le "Action" (sinon ta fonction pourra être appelée via l'url) en private. Je n'ai pas de soucis, mais je ne trouve aps ça super propre,c 'est sur.
    Hummm... Ok, merci. Mais lorsque c'est déclaré un private, c'est automatiquement inaccessible par url non?

  6. #6
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Par définition un élément déclaré en private dans un objet n'est accessible que dans cet objet. Tu ne peux même pas l'utiliser en héritage.

    Cordialement Inazo.

  7. #7
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Oui, mais ça doit générer une erreur PHP au lieu d'une exception noControlleurAction (enfin je suppose, j'ai pas testé).

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par haltabush Voir le message
    Oui, mais ça doit générer une erreur PHP au lieu d'une exception noControlleurAction (enfin je suppose, j'ai pas testé).
    Ok! Donc si je veux mettre une méthode dans un controller, c'est sans le Action et là impossible d'y accéder depuis une url.

    Donc, je n'ai pas besoin de définir public/private?

  9. #9
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Dans le doute, ça coute rien de rajouter "private" ^^

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Après, si tu veux que cette fonction soit disponible dans tous les controllers, tu peux en effet utiliser un action helper.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ZF 1.9] Action par défaut : __call et les controllers
    Par s.n.a.f.u dans le forum MVC
    Réponses: 4
    Dernier message: 02/10/2009, 16h39
  2. Colorier les controles d'une DLG
    Par tonycalv dans le forum MFC
    Réponses: 7
    Dernier message: 11/01/2008, 08h48
  3. [MFC] Recuperer tout les control d'un CDialog
    Par mickaelguilbert dans le forum MFC
    Réponses: 6
    Dernier message: 11/08/2005, 11h04
  4. Lister les process avec leurs arguments
    Par jamfr73 dans le forum MFC
    Réponses: 5
    Dernier message: 23/12/2004, 10h54
  5. Réponses: 4
    Dernier message: 13/12/2004, 20h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo