Question

Je travaille sur le code refactoring d'une partie de chargement du fichier de configuration en PHP. Plus tôt j'utilisais plusieurs fichiers ini, mais maintenant je prévois d'aller seul fichier XML qui sera contenant tous les détails de configuration du projet. Le problème est, si quelqu'un veut fichier de configuration dans ini ou DB ou quoi que ce soit d'autre et non pas celui par défaut (dans ce cas XML), mon code doit gérer cette partie.

Si quelqu'un veut aller l'autre option de configuration comme ini, il devra créer ini fichier similaire à mon fichier de configuration XML et mon gestionnaire de configuration devrait prendre soin tout comme l'analyse syntaxique, le stockage dans le cache. Pour que je besoin d'un mécanisme permet de dire que l'interface appropriée pour mes données de configuration où le magasin de données sous-jacentes peut être quelque chose (XML, DB, ini etc) aussi je ne veux pas dépendre de ces magasins sous-jacents et à tout moment à l'avenir, ce qui devrait être extensible à d'autres formats de fichiers.

Était-ce utile?

La solution

En supposant que vous êtes désireux d'utiliser une classe pour gérer tout cela, vous avez 3 options:

  1. Avoir une classe de base appelée quelque chose comme, ReadConfigurationBase puis 3 classes d'implémentation, ReadConfigurationXML, ReadConfigurationINI et ReadConfigurationDatabase et vous auriez à choisir la bonne
  2. Comme ci-dessus, mais en utilisant une usine de choisir, sur la base de quelque chose hors passé. Comme si vous passez config.xml il ne saurait revenir ReadConfigurationBase mis en œuvre en utilisant ReadConfigurationXML
  3. Avoir une classe appelée ReadConfiguration et il agit comme étape 2, mais crée, contient, et possède, les 3 autres classes.

Les 3 classes non-base doit simplement savoir lire ce type de fichier de configuration, et transmettre les informations de retour d'une manière générique. que le long des lignes d'une interface. Vous savez que vous pouvez obtenir les données, mais vous ne vous inquiétez pas comment

Je vous suggère l'option 3, car il rendrait la vie plus facile. Vous devez faire un peu de modification à chaque fois que vous souhaitez ajouter une méthode de stockage, mais ce serait juste d'ajouter un peu dans la classe ReadConfiguration.

Il y a une façon que vous pouvez faire 100% dynamique, mais cela compliquerait les choses, et je ne pense pas que vous avez vraiment besoin pour cela.

Autres conseils

Jetez un oeil à Zend_Config . Il fournit des adaptateurs pour les tableaux, Xml et Inis. Comme tous les composants Zend Framework, il peut être utilisé isolé du reste-cadre. Même si vous ne voulez pas l'utiliser, il est bien conçu et vous pourriez obtenir quelques idées pour votre propre gestionnaire de configuration de celui-ci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top