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 :

POO - Intérêt des références [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Points : 204
    Points
    204
    Par défaut POO - Intérêt des références
    Bonjour,

    J'ai un peu du mal à percevoir l'intérêt de l'utilisation des affectations par référence. J'ai beau lire les manuels, il me manque un cas pratique ou un exemple criant pour piger et le fonctionnement et surtout l'intérêt.

    Quelque'un peut-il éclairer ma lanterne ?
    Merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    Salut,
    Il faut savoir que tout objet est passé par référence en PHP 5, or on manipule souvent des objets ce qui, du coup, limite le champ d'application du passage par référence manuel.

    Les références sont donc utiles pour les types scalaires ou tableaux.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    function alter(&$a, Array &$b) {
         $a = "new string";
         $b["key"] = "new val"; 
    }
     
    $a = "string";
    $b = array("key" => "val");
    $c = $a;
    $d = &$a;
     
    alter($a, $b);
     
    var_dump($a); // "new string"
    var_dump($b); // "key" => "new val"
    var_dump($c); // "new string"
    var_dump($d); // "string"

  3. #3
    Membre actif Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Points : 204
    Points
    204
    Par défaut
    Merci eswiac,

    Donc, je suppopse que si on remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function (&$a, Array &$b){...
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function ($a, Array $b){...
    on obtient pas la même chose ?
    Si je perçois le rôle de l'éperluette dans
    j'ai du mal à saisir sa fonction dans... la fonction...
    D'ailleurs après test c'est l'inverse pour $c et $d...

  4. #4
    Membre actif Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Points : 204
    Points
    204
    Par défaut
    Après quelques essais...
    Je réalise qu'il n'y a pas de return dans les fonctions.
    Ainsi, en utilisant l'affectation par réf dans la fonction on modifie ce vers quoi pointe les variables du même nom ?? c'est ça ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Points : 2 113
    Points
    2 113
    Par défaut
    Oui c'est plus ou moins ça.

    Quand tu reçois une variable par référence, et que tu modifie cette variable, ça utilise le même espace mémoire que la variable passée. Par contre quand tu reçois une variable par copie (l'autre possibilité), ça crée une nouvelle variable qui n'a rien à voir avec celle que tu as passé. Et donc les modifications que tu fais à une variable reçue par copie ne sont valables que dans la (portée de la) fonction elle même.

  6. #6
    Membre actif Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Points : 204
    Points
    204
    Par défaut
    Merci beaucoup !
    Je vais essayer de me débrouiller déjà avec ça.
    Je crois avoir pigé le fonctionnement (général) il me reste à en trouver l'intérêt en application (à l'usage sans doute...)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/07/2007, 11h50
  2. Réponses: 13
    Dernier message: 28/08/2004, 18h43
  3. [glut] de l'intérêt des listes
    Par khayyam90 dans le forum OpenGL
    Réponses: 3
    Dernier message: 26/07/2004, 10h35
  4. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 22h28
  5. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11

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