1

Je suis intéressé par l'utilisation de 2 classes différentes dans 2 environnements différents. Les deux classes devraient partager la même structure (méthodes), mais celle utilisée en production serait "légère", avec moins de vérifications ou moins de funalités ou d'actions différentes.Architecture: utilisation de différentes classes sur le développement/production

Exemple: une classe de requête SQL qui ne vérifie pas le type/l'existence des champs. Autre exemple: une classe de gestion d'erreurs qui enregistre et n'affiche pas les messages.

Je suppose qu'un modèle de conception spécifique existe déjà, mais je ne sais pas vraiment dans lequel je devrais creuser.

Répondre

4

Cela peut être juste moi ... mais c'est une très mauvaise idée.

Vous ne devriez pas avoir de code en cours d'exécution en direct que vous n'utilisez pas dans Développement/Test. Sinon, il n'y a aucun moyen de vérifier que le code fonctionne correctement (à part, bien sûr, en le poussant à la production et en croisant les doigts). Pour cette raison, je ne pense pas que vous allez trouver un bon exemple de ce que vous cherchez.

Mise à jour

Qu'est-ce que vous avez décrit est légèrement différente de celle que votre lit question initiale. Si c'est le cas, vous pouvez faire lire votre 'framework' pour un fichier de configuration qui spécifie les niveaux de validation et de journalisation. De cette façon, votre fichier de configuration peut différer d'un environnement à l'autre et continuer à utiliser la même base de code.

+1

Je pense qu'il regarde le revers de ce que vous décrivez, le code fonctionne en dev/stage mais pas en production. Indépendamment de +1 parce que c'est toujours une mauvaise idée. – NotMe

+0

La réalité est: le code s'exécute d'abord dans un environnement de développement, qui effectue toutes les vérifications nécessaires. Ensuite, le code est poussé en production. Le même code. Juste que la couche sous-jacente est plus légère et n'enregistre pas autant de choses et ne vérifie pas autant de chose que dans la partie développement. Comme une chose "cadre", avec 2 "configurations". Cela ne me semble pas mal. Le fichier de configuration PHP (php.ini) n'est pas le même lors du développement/de la production. – Savageman

+0

@Savageman - Ce cas est un peu différent de celui de votre question originale. Voir ma réponse mise à jour. –

0

Ce n'est pas une bonne idée d'avoir un code différent dans vos différents environnements. Pour votre scénario, je pense que la meilleure option est d'externaliser comme aspects de la configuration les choses que vous voulez éviter dans un environnement particulier et lorsque l'application est déployée définir les journaux détaillés on/off, vérification des champs on/off,

Toutes les modifications apportées aux environnements doivent être effectuées de manière cohérente pour éviter les problèmes. Un système de contrôle de version et un processus cohérent de construction et de déploiement sont vos amis pour cela.

+0

Oui, je vois ce que vous voulez dire. Je ne voudrais pas déclencher la vérification de la santé mentale. Cher Seigneur! Ce n'est pas une fonctionnalité optionnelle. Il s'agit d'exécuter 2 versions de la même base de code (qui effectue les mêmes actions obligatoires), et de laisser le reste en production. Cela dit, il est intéressant de pouvoir tout vérifier en production, mais pour cela il suffit d'utiliser l'autre classe. Toute ma préoccupation est de charger moins de code et d'effectuer moins de vérifications, d'avoir un petit code qui peut être lu et compris très rapidement. Les vérifications contre certaines configurations ne font que rajouter plus de complexité à l'ensemble. – Savageman

0

Convenu de la plupart des commentaires ci-dessus concernant la non-exécution de code différent dans les environnements de production et de développement. Cela dit, vous êtes probablement à la recherche d'un modèle Factory ou Factory Method.

0

Dans mon cas, j'ai une passerelle de paiement avec un bac à sable et un environnement en direct. ce que j'ai fait était d'utiliser un factory pattern + Interfaces (donc toutes les passerelles ont la même signature) + configuration (où le système sait quelle classe doit être instance)

Questions connexes