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

Langage PHP Discussion :

Prise en compte de différents environnements de développement proprement pour l'accès aux données


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut Prise en compte de différents environnements de développement proprement pour l'accès aux données
    Bonjour,

    j'ai une question assez basique mais importante, ma couche d'accès aux données fonctionne correctement, le seul problème étant que les URLs d'appels à mes services web ou base de données sont différents ainsi que mes logins/mot de passe selon que mon code fonctionne en environnement de développement ou en production.

    Qu'elle est la meilleure approche, je parle réellement de structure de code, en réalité ce conseil n'est pas lié fortement à PHP.

    Passer en paramètre de la couche data les données qui changent selon l’environnement ? En d'autres termes, dans le constructeur.

  2. #2
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    Bonjour,

    Si tu regardes du côté des frameworks, en général on passe effectivement ces variables dans les constructeurs car elles sont nécessaires à la création de l'objet. Plus spécifiquement, les frameworks utilisent des factories pour créer ces objets en injectant la configuration.

    Exemple avec Zend Framework

    Niveau configuration, sur ZF2 par exemple on utilise en général des fichiers .local.php pour overrider les .global.php et mettre ces settings spécifiques. Une autre variante consiste à utiliser des variables d'environnement, et ça se prête particulièrement bien au déploiements avec Docker ou sur des PAAS type Heroku. Pour cette dernière solution je te conseille d'utiliser dotEnv qui est une très bonne librairie.

    Personnellement j'ai tendance à utiliser ZF et ajouter dotEnv, récupérant ensuite les variables d'environnement dans le .global.php, mais gardant la possibilité d'écraser tout ça avec un .local pour un environnement vraiment plus spécifique (lors d'un test durant lequel tu changes les adresses de ton object storage, si tu en as un cher pour staging/prod par exemple et un vraiment pas cher pour la dev...).

    Si tu m'en dis plus sur ton setup, je pourrais t'aider mieux je pense.

  3. #3
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    Merci pour ta réponse. J'aurais du le préciser au départ, PHP brut, pas de framework.

  4. #4
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    Je prends les frameworks en exemple car ils apportent des bonnes pratiques mais ce ne sont que des exemples...

    Comment gères-tu la configuration ? As-tu un point d'accès unique à ton application ? Utilises-tu un service manager ?

  5. #5
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    Citation Envoyé par Théocrite Voir le message
    Je prends les frameworks en exemple car ils apportent des bonnes pratiques mais ce ne sont que des exemples...

    Comment gères-tu la configuration ? As-tu un point d'accès unique à ton application ? Utilises-tu un service manager ?
    Jamais utilisé de service manager, pour l'instant l'exécute mes pages manuellement en ligne de commande via : php monscript.php ce qui passe pour faire des tests, par contre :
    - si j'utilise les variables d'environnement d'Apache (via $_ENV ?), je devrais faire tourner mes scripts via le navigateur et non via le terminal sinon je n'aurai pas accès aux variables en question.

    Cette approche me parait être une bonne idée, d'autres points pour me guider ?

  6. #6
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    Avec DotEnv tu peux de toutes façons mettre les variables en clé=valeur dans le fichier .env

    Plutôt que $_ENV on va plutôt utiliser getenv qui ne vérifie pas la casse de ta variable.

    Sinon, les variables d'environnements peuvent être mises sur le système directement, pas uniquement dans Apache. Quel OS utilises-tu ? Niveau système je trouves personnellement que les variables d'environnement ne sont pas pratiques à mettre en place, et avec plusieurs projets et environnement ça part vite en cacahuète... du coup le mieux c'est d'utiliser les .env sur les environnements locaux, puis les variables d'environnement sur les déploiments, ou d'utiliser de la virtualisation (puphpet), du Docker ou autre, voir des PAAS (Openshift gratuit pour 3 small engine par exemple, Pagodabox gratuit en version de test)

Discussions similaires

  1. [JUnit] Tests jUnit sur différents environnements de développements?
    Par dev29 dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 08/01/2014, 23h44
  2. Réponses: 4
    Dernier message: 07/11/2012, 11h49
  3. PascalGladiator : Environnement de développement Pascal pour Mac
    Par forum dans le forum Outils à télécharger
    Réponses: 0
    Dernier message: 23/03/2011, 21h12
  4. Réponses: 0
    Dernier message: 22/03/2011, 23h32
  5. Réponses: 0
    Dernier message: 11/10/2008, 19h59

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