Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/02/2008, 18h44   #1
Membre régulier
 
Avatar de FrontLine
 
Nicolas
Webmaster
Inscription : janvier 2008
Messages : 172
Détails du profil
Informations personnelles :
Nom : Nicolas
Âge : 30

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : janvier 2008
Messages : 172
Points : 84
Points : 84
Par défaut [POO] Que signifie =& ?

Bonjour,

je ne trouve pas la réponse, surement parce que les outils de recherche ignorent ces caractères =&

Que signifie =& svp ?

$var =& mafonction();

Autre exemple : $var =& new $class();

Merci
FrontLine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2008, 18h55   #2
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Bonjour,
un petit exemple PHP avec l'opérateur de référence?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
  $a = 1;
  $b =& $a;
 
  $a++;
 
  var_dump($b); // retourne int(2)
 
  $b++;
 
  var_dump($a); // retourne int(3)
 
?>
Cordialement,
DaRiaN.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2008, 20h08   #3
Membre régulier
 
Avatar de FrontLine
 
Nicolas
Webmaster
Inscription : janvier 2008
Messages : 172
Détails du profil
Informations personnelles :
Nom : Nicolas
Âge : 30

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : janvier 2008
Messages : 172
Points : 84
Points : 84
Bonsoir DaRian et merci pour ta réponse

Mmh donc si je comprends bien, $b et $a subissent les même effets quand on touche à l'une ou a l'autre ?

Si c'est bien ça, je me demande dans quel cas ça peut s'avérer utile plutôt que d'utiliser une seule variable ?
FrontLine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2008, 20h30   #4
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Oui, avec mon exemple, c'est franchement de l'aliasing de base.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
  function token(&$s)
  {
    $s .= '.abc-123';
  }
 
  $mdp = 'to4x12@s';
 
  token($mdp);
 
  echo $mdp;  // retourne to4x12@s.abc-123
 
?>
Pensez qu'une fonction peut avoir plusieurs arguments mais seulement une seule valeur de retour (RETURN), est-ce que c'est plus intéressant?
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2008, 16h47   #5
Membre régulier
 
Avatar de FrontLine
 
Nicolas
Webmaster
Inscription : janvier 2008
Messages : 172
Détails du profil
Informations personnelles :
Nom : Nicolas
Âge : 30

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : janvier 2008
Messages : 172
Points : 84
Points : 84
Bonjour,

d'accord je comprends ton exemple et en voit l'intêret pour manipuler la valeur d'une fonction mais je ne vois pas trop l'intêret de créer une classe ou d'executer une fonction comme ceci
Code :
1
2
$varClass =& new $class();
$varFonction =& mafonction();
Quel est l'intêret svp ?
FrontLine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2008, 16h57   #6
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
salut,

regarde ceci:

http://www.joomlagora.org/index.php/...ssage-106.html
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2008, 17h01   #7
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
En gros c'est passé une variable, une fonction, etc par référence pour alléger le serveur en mémoire.

Mais bon, pour plus d'infos,

il faut chercher aussi "passage de variable par référence"
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2008, 17h05   #8
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Je vais vous avouer que je ne me suis jamais penché sur cette question, je tâcherai d'y voir plus clair quand j'aurais une minute.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2008, 12h31   #9
Membre régulier
 
Avatar de FrontLine
 
Nicolas
Webmaster
Inscription : janvier 2008
Messages : 172
Détails du profil
Informations personnelles :
Nom : Nicolas
Âge : 30

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : janvier 2008
Messages : 172
Points : 84
Points : 84
Bonjour,

ah d'accord ! Je comprends mieux maintenant.

Citation:
Envoyé par Sayrus Voir le message
il faut chercher aussi "passage de variable par référence"
Effectivement avec le terme plutôt que le signe & c'est plus facile de trouver des résultats ^^

Donc pour être sûr et me l'enfoncer dans le crane :
Code :
$varClass =& new $class();
Là $varClass fait référence à $class sans charger à nouveau en mémoire le contenu de $class ?

Code :
$varFonction =& mafonction();
$varFonction fait référence à mafonction() sans la charger à nouveau en mémoire ?

Donc une sorte de lien vers la ressource qui est en mémoire quoi ?

Merci à vous 2
FrontLine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2008, 16h53   #10
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Note : en PHP 5, le passage par référence pour les objets est effectué par défaut par php.

Donc pas besoin du & devant
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2008, 02h19   #11
Membre régulier
 
Avatar de FrontLine
 
Nicolas
Webmaster
Inscription : janvier 2008
Messages : 172
Détails du profil
Informations personnelles :
Nom : Nicolas
Âge : 30

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : janvier 2008
Messages : 172
Points : 84
Points : 84
Tu es sûr car PHP (5.2) consomme moins de ressource mémoire (quelques centaines d'octets par objet) avec la référence.

Exemple get_memory_usage() me retourne moins d'octet
Code :
$varClass =& new $class();
qu'avec
Code :
$varClass = new $class();
Tu veux peut être dire avec un passage de la façon ci-dessous ? Là effectivement il n'y a aucune différence de mémoire.
FrontLine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2008, 08h37   #12
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Je cite pour la section POO du livre "PHP 5 avancé 3e édition" :

Citation:
PHP 5, le passage par référence

La version5 de PHP modifie cet état de fait et utilise par défaut l'affectation par référence quand il s'agit d'objets. Pour simplifier, on peut considérer que l'opérateur & est toujours présent, implicitement, à chaque fois qu'un objet est affecté à une variable ou passé à une fonction.

Voilà ce qui est dit sur le passage par référence pour les objets, donc j'en conclu que l'opérateur & ne soit pas nécessaire.
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2008, 18h33   #13
Membre régulier
 
Avatar de FrontLine
 
Nicolas
Webmaster
Inscription : janvier 2008
Messages : 172
Détails du profil
Informations personnelles :
Nom : Nicolas
Âge : 30

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : janvier 2008
Messages : 172
Points : 84
Points : 84
Merci pour ces précisions
FrontLine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h36.


 
 
 
 
Partenaires

Hébergement Web