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 :

definition variable en référence dans fonction


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Par défaut definition variable en référence dans fonction
    Bonjour,

    J'essaye de comprendre un script et je suis tombé sur code que je prend pas

    On appel une fonction dans laquelle des variables sont passées

    Dans la définition de la fonction, une des variables et en référence

    Exemple :


    Execution fonction :

    $
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error=XMLParseFile($parser,$file_name,1,$file_name.".cache");
    La variable $parser n'est définie nulle part....;

    Exempe de valuer pour $file_name : fichier.txt


    Definition de la fonction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function XMLParseFile(&$parser,$file,$store_positions,$cache="",$case_folding=0,$target_encoding="ISO-8859-1",$simplified_xml=0,$fail_on_non_simplified_xml=0)
    {
     
    	....
    }
    Que signifie sans ce cas la valeur &$parser en référence ?



    Merci beaucoup

  2. #2
    Membre confirmé Avatar de Freyskeyd
    Homme Profil pro
    Développeur PHP | Flex
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur PHP | Flex
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    ::

    Le & va modifié ta variable d'entré.
    Tu n'as pas besoin de retourner une valeur qui mettra à jours ton parser. Avec le &$parser, ta variable sera mise à jours dans la fonction.

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Par défaut
    Citation Envoyé par Freyskeyd Voir le message
    ::

    Le & va modifié ta variable d'entré.
    Tu n'as pas besoin de retourner une valeur qui mettra à jours ton parser. Avec le &$parser, ta variable sera mise à jours dans la fonction.
    Merci beaucoup pour la réponse.

    En gros comme ceci si j'ai bien compris ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function test(&$test,$toto){
    	$test = "bonjour ";
    	echo $test.$toto;
    }
     
    test($test,"bob");
     
    //retourne  "bonjour bob"

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Ce serait plutôt comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function test(&$test) {
    	$test = 'Bonjour '.$test;
    }
     
    $test = 'Bob';
    test($test);
    echo $test; // Affiche : Bonjour Bob
    La variable $test "passe" par référence (c'est le & devant $test qui le défini à la création de la fonction).
    Ca veut dire que si $test est modifiée dans la fonction, sa valeur tiendra compte de cette modification même en-dehors de la fonction.
    C'est ce que démontre lors du echo $test qui se fait en-dehors de la fonction.

    En fait, par défaut toute variable dans une fonction a une portée locale, c'est à dire visible uniquement dans la fonction.
    Donc toujours par défaut, tout paramètre "passés" dans la fonction "passent" par valeur.
    Ce qui veut dire qu'on ne peu pas faire appel à une des ses variables en-dehors de la fonction.

    Par contre, si on déclare une (ou plusieurs) variable avec un "passage" par référence, cette fois on pourra faire appel à celle-ci en-dehors de la fonction.


    A savoir que depuis Php5, un Objet "passe" obligatoirement par référence (et non par valeur).
    Ce qui veut dire qu'il n'est pas nécessaire d'indiquer le & devant une variable Objet (ceci génèrera une erreur d'ailleurs si on le fait).


    En espérant ne pas dire de bêtises.

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Par défaut
    merci beaucoup !

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

Discussions similaires

  1. Problème de variable en référence dans une récursion
    Par Thabris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/02/2014, 16h10
  2. Réponses: 2
    Dernier message: 30/03/2009, 12h21
  3. Réponses: 6
    Dernier message: 30/10/2007, 12h27
  4. Variable qui évolue en fonction des choix dans formulaire
    Par stefou007 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2005, 22h40
  5. Réponses: 5
    Dernier message: 13/08/2004, 15h40

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