2010-03-07 2 views

Répondre

2

Singleton est essentiellement juste syntaxe fantaisie pour une variable globale, et est aussi mauvais que les globales sont (et ils sont mauvais). Passer un paramètre est l'option la plus propre car elle ne crée aucun couplage entre les classes et permet une flexibilité maximale. Une autre option raisonnable (mais plutôt avancée) consiste à utiliser un conteneur d'injection de dépendance, voir par exemple this post.

+0

Lire maintenant votre lien - très intéressant, en particulier cet article http://www.sitepoint.com/blogs/2008/02/04/dealing-with-dependencies/ Par ailleurs, s'il vous plaît pourriez-vous me dire pourquoi les globales sont considéré comme un mauvais moyen? – Kirzilla

+0

... probablement. Je commence juste à faire du POO en PHP. – Kirzilla

0

Si Config est un Singleton, vous pouvez utiliser à peu près toute solution que vous souhaitez:

  • En passant comme paramètre n'est pas nécessaire, car il est global
    • Mais le passage est en tant que paramètre peut permettre l'injection de dépendance - ce qui peut aider si vous voulez des tests automatisés
  • Le stocker en tant que propriété de classe peut être utile - mais ce n'est pas obligatoire non plus.


En général, pour ce genre d'objet, je viens d'utiliser Config::getInstance() chaque fois que je besoin, et ne pas stocker dans une propriété de classe.

Mais je suppose que cela est une question de préférences personnelles ...

0

Je fais habituellement un singleton exemple au moyen de Config::getInstance(), et ajouter à accesors Environment#config (ou Bootstrap#config, tutoriels vont avec Bootstrap) et My_Top_Controller#config (ce My_Top_Controller étend Zend_Controller et est l'ancêtre de tous les autres contrôleurs) et l'ajoute également à Zend_Registry via la clé de configuration.

Questions connexes