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 :

signe "&" avant le nom d'une fonction


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut signe "&" avant le nom d'une fonction
    Bonjour

    En lisant le code source de joomla, j'ai vu quelques fonctions avec le signe "&" avant le nom

    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function & getInstance($id = 'Joomla')
    	{
    		static $instances;
     
    		if (!isset ($instances)) {
    			$instances = array ();
    		}
     
    		if (empty ($instances[$id])) {
    			$instances[$id] = new JMail();
    		}
     
    		return $instances[$id];
    	}
     
    	/**
    	 * @return mixed True if successful, a JError object otherwise
    	 */
    	function &Send()
    	{
    		if ( ( $this->Mailer == 'mail' ) && ! function_exists('mail') )
    		{
    			return JError::raiseNotice( 500, JText::_('MAIL_FUNCTION_DISABLED') );
    		}
     
    		@ $result = parent::Send();
     
    		if ($result == false)
    		{
    			// TODO: Set an appropriate error number
    			$result =& JError::raiseNotice( 500, JText::_($this->ErrorInfo) );
    		}
    		return $result;
    	}
    ça sert à quoi ?

    Merci d'avance

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Ce sont ce qu'on appelle des références php

    Références PHP

  3. #3
    Membre averti
    Avatar de cahnory
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 203
    Points : 401
    Points
    401
    Par défaut
    Concrètement, mettre un & devant le nom d'une fonction permet à celui qui l'utilise de modifier la variable retournée.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo getInstance(123); // ancienne valeur
     
    $a =& getInstance(123);
    $a = 'nouvelle valeur';
    echo getInstance(123); // nouvelle valeur
     
    $b = getInstance(123);
    $b = 'valeur initiale';
    echo getInstance(123); // nouvelle valeur
    Dans le premier cas on a bien modifié la variable retournée par getInstance, à savoir $instances[123], dans le second on a juste modifié $b.

    Si tu veux en savoir plus :
    http://php.net/manual/en/language.references.php

  4. #4
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    Merci

    Apparemment c'est déprécié de le faire :

    Depuis PHP 5, new retourne une référence automatiquement, donc, l'utilisation de =& dans ce contexte est obsolète et produit un message de niveau E_STRICT.

  5. #5
    Membre averti
    Avatar de cahnory
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 203
    Points : 401
    Points
    401
    Par défaut
    c'est pas bien de faire $maVar =& new Class;
    enfin j'imagine car çe ne me serait pas venu à l'idée.
    Ta citation (sans source) n'est valable que pour les objets qui passent automatiquement une référence.

  6. #6
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    Citation Envoyé par cahnory Voir le message
    Ta citation (sans source) n'est valable que pour les objets qui passent automatiquement une référence.
    voici la source http://php.net/manual/fr/language.references.whatdo.php,
    enfin sur une fonction je ne vois pas l'utilisé.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/08/2006, 11h25
  2. test sur le nom d'une fonction
    Par Art19 dans le forum C
    Réponses: 6
    Dernier message: 26/06/2006, 18h29
  3. [Tableaux] Oubli du nom d'une fonction
    Par Ekimasu dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2006, 10h50

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