2010-08-12 4 views
1

Je travaille sur un framework qui a une fonction invokeView() dans le contrôleur. A partir de maintenant, cela appelle essentiellement sur une classe php $ target qui à son tour affiche un modèle smarty. Je voudrais que la classe $ target ait accès à un objet $ response créé à l'intérieur du contrôleur (le même endroit qui appelle la page $ target). Au lieu d'avoir la page cible $ saisir l'objet de réponse $ à partir d'une zone globale (comme le stockage de session), je voudrais le passer dans la classe $ target, peut-être en ayant une fonction sur l'objet $ target comme display ($ réponse). Il semble que si je faisais quelque chose comme ça, la pile d'appels ne cesserait de croître et de grandir, ce qui ne serait pas bon.Question de pile d'appel PHP

Est-ce que ce que je dis est logique? Si oui, qu'est-ce qui a plus de sens, en passant la réponse $ ou en l'attrapant de la Session?

Merci!

+0

Pouvez-vous clarifier, 'invokeView' prend-il des arguments? '$ target' est la classe View? "Normalement" un contrôleur mettrait un certain type de variables de contexte à utiliser dans la vue, pouvez-vous simplement ajouter la réponse $ là? Qu'en est-il de surcharger la méthode dans le contrôleur qui configure la classe '$ target' et ajouter un paramètre supplémentaire à la méthode' $ target' '__construct'? – sberry

+0

La classe de contrôleur exécute des commandes basées sur une propriété dans un objet $ request. Une fois que toutes les commandes ont été exécutées (si des commandes ont été transférées à un autre), le contrôleur détermine quelle vue afficher en fonction des commandes qui ont été appelées et de l'état de cette commande (OK, ERREUR, etc.). Une fois qu'il a la vue appropriée, dites 'register', alors il appelle invokeView ('target'). InvokeView puis appelle simplement: include '/lib/pages/target.php'. En utilisant la configuration 'include' actuelle, je devrais ajouter l'objet $ request (ou $ response) dans une session var où la cible y accèderait. – user417918

+0

Je ne suis pas sûr que ce soit la meilleure façon de passer les variables. Si j'avais un _-construct sur la classe cible, je crains qu'en l'instanciant dans la classe contrôleur, je créerais beaucoup d'appels sur la pile qui ne se déclencheraient jamais. – user417918

Répondre

0

Non, cela n'a pas de sens et ne devrait pas poser de problème. PHP a une limite d'imbrication de fonction qui prend en charge des appels de code imbriqués trop profondément de toute façon :)