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] méthode __clone et référence !


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut [POO] méthode __clone et référence !
    Bonjour

    J'ai un petit probleme je ne comprends pas pourquoi mon code affiche 52. Il devrait pourtant afficher 55 a cause de la reference dans la methode clone.
    En gros la reference ne fonctionne pas :S

    Merci par avance !


    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
    <?php
    class objet
    {
    	public $maVar;
     
    	function __construct()
    	{
    		$this->maVar = 2;
    	}
     
    	function __clone()
    	{
    		$this->maVar = & $this->maVar;
    	}
    }
     
    $test = new objet();
    $test2 = new objet();
     
     
    $test2 = clone $test;
    $test->maVar = 5;
     
    echo $test->maVar;
    echo $test2->maVar;
    ?>

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    avant d'exécuter __clone(), la fonction clone a déjà fait une copie "superficielle" (pour citer la doc de référence) des propriétés de l'objet cloné.

    La méthode magique __clone n'est donc intéressante que pour compléter cette copie superficielle par exemple en dupliquant les propriétés qui restent communes, pas pour empêcher cette copie superficielle.

    Pour bénéficier de la fonctionnalité que tu recherches, il faut créer une autre fonction...

  3. #3
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Je ne suis pas un wizard en POO, mais étant donné que la méthode __clone() n'accept aucun paramètre. Voici le code que j'utilise. Peut être as tu déjà adopté cette méthode ? Mais voilà au cas où
    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
    <?php
    class objet
    {
    	public $maVar;
     
    	function __construct()
    	{
    		$this->maVar = 2;
    	}
     
    	function my_clone($obj)
    	{
    		 $obj->maVar = $this->maVar;
    	}
    }
     
    $test = new objet();
    $test2 = new objet();
     
    $test->maVar = 5;
    $test->my_clone($test2);
     
     
    echo $test->maVar."<br>";
    echo $test2->maVar;
    ?>

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    En effet j'avais pense a cette solution et je vais faire comme ca.

    Merci a vous deux.

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

Discussions similaires

  1. [POO] Modifier un objet [références]
    Par MorganStern dans le forum Langage
    Réponses: 11
    Dernier message: 04/05/2007, 12h44
  2. [POO] Méthode abstraite PHP4
    Par joebarteam88 dans le forum Langage
    Réponses: 2
    Dernier message: 30/04/2007, 07h32
  3. Réponses: 4
    Dernier message: 17/03/2007, 01h06
  4. [POO] Argument facultatif par référence
    Par windob dans le forum Langage
    Réponses: 11
    Dernier message: 20/08/2006, 15h02
  5. [POO] BUG PHP ?? Utilisation référence
    Par aurapp dans le forum Langage
    Réponses: 6
    Dernier message: 04/04/2006, 14h25

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