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 :

Variables globales à plusieurs niveaux ?


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2009
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 263
    Points : 79
    Points
    79
    Par défaut Variables globales à plusieurs niveaux ?
    Bonjour,
    Je poursuis une conversion d'un site de ColdFusion à PHP et j'ai une question :
    ColdFusion permet de construire des « custom tags ». Ça peut se comparer un peu à une fonction et je pense pouvoir convertir en fonctions.
    Mais il y a une possiblité dans ces custom tags (CT) que je me demande comment reproduire en PHP :
    Un custom tag est capable de lire ou modifier toutes les variables définies dans le code appelant, par exemple caller.truc permet d'accéder à la variable truc du code qui a appelé le CT en question. Mais on remonte d'un seul niveau à la fois, c'est-à-dire aux variables locales du niveau supérieur et c'est tout, même si on est rendu au nième niveau d'appel (CT récursifs).
    En PHP on peut déclarer une variable global, mais ça s'applique à la page au complet, et à tout les niveaux, même dans une utilisation récursive.

    Ma question : est-ce qu'il y a un moyen de gérer les variables uniquement de l'environnement supérieur en PHP ?

  2. #2
    Membre actif Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Points : 232
    Points
    232
    Par défaut
    Je ne connais pas ColdFusion, mais je crois que ce que vous dites n'a pas de sens en PHP.

    En PHP soit une variable a une porté globale (déclarée hors de toute fonction), soit une porté locale (la fonction où elle est définie). Et c'est tout.
    En utilisant le mot clé global, on peut utiliser une variable globale dans une fonction (par défaut, elles sont inaccessibles).

    Global ou local (= fonction). Il n'y a pas "d'environnement" intermédiaire.

    Avec les closures on peut capturer des variables locales pour les envoyer dans une fonction... C'est peut être proche de ce que vous cherchez avec le mot clé use ?
    Voir : https://www.php.net/manual/fr/functions.anonymous.php
    Mais ça reste une variable "locale" (porté limitée à la fonction où elle est définie mais utilisable dans la fonction anonyme).

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    c'est étrange comme comportement. Généralement, quand on génère un rendu, on descend l'arborescence des blocs vue. On va du bloc le plus englobant au bloc le plus englobé et c'est le bloc parent qui s'occupe du paramétrage du bloc enfant. Le fonctionnement inverse ne me paraît pas des plus adéquat.
    Ce que tu cherches est faisable moyennent un peu d'ingénierie objet en PHP. Si tu débutes, laisse tomber et reprend le déroulé du code comme indiqué avant. C'est le standard le plus courant et de loin.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2009
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 263
    Points : 79
    Points
    79
    Par défaut
    Ouais, je me doutais que ce n'était pas facile en PHP. Il faudra que je me débrouille autrement.
    En fait, ce comportement de ColdFusion peut-être bien utile, mais je reconnais que c'est un cas unique dans les quelques dizaines de langages que j'ai étudié dans ma longue carrière.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Variable globale à plusieurs dll C# asp.net
    Par poussinvert dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 11/05/2013, 00h08
  2. Variable Globale - Plusieurs scripts
    Par Ridculle dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2008, 10h51
  3. Variable globale à plusieurs pages .php
    Par rivaol dans le forum Langage
    Réponses: 6
    Dernier message: 19/06/2006, 09h12
  4. variable globale pour plusieurs Form
    Par ced2004 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/04/2005, 08h50
  5. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 19h22

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