Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    20

    problema con le classi in php

    Sto approcciando il php da pochissimo,
    Ho trovato alcuni problemi con le classi, e specialmente con i costruttori. In pratica l'ultimo parametro passato al costruttore sovrascrive tutti gli altri!!

    ad esempio

    Creo un'array di istanze della classe Message, e passo ad ogn istanza quatto numeri in sequenza. Quando vado a ristampare il primo numero php mi fa vedere l'ultimo parametro passato al costruttore.

    --PHP Version 4.0.0

    class Message{
    var $original;
    var $oneadded;
    var $twoadded;
    var $threeadded;

    function Message($sender, $receiver, $description, $content){
    $this->$original = $sender;
    echo("$sender + 0 = ".$this->$original."
    ");
    $this->$oneadded = $receiver;
    echo("$sender + 1 = ".$this->$oneadded."
    ");
    $this->$twoadded = $description;
    echo("$sender + 2 = ".$this->$twoadded."
    ");
    $this->$threeadded = $content;
    echo("$sender + 3 = ".$this->$threeadded."
    ");
    }
    }

    function getNewsUsers()
    {
    $UserList = array();
    for($i=0; $i<20; $i++)
    {
    //echo("push
    ");
    array_push($UserList,new Message($i,$i+1,$i+2,$i+3));
    }
    echo("----------------------------------------------------------
    ");
    for($i=0; $i<count($UserList); $i++)
    {
    echo("UserList[$i] ".$UserList[$i]->$twoadded."
    ");
    }
    return $UserList;
    }

    $prova = getNewsUsers();

    echo("---->".count($prova)."
    ");
    for($i=0; $i<count($prova); $i++)
    {
    echo(" ---> $i + 0 = ".$prova[$i]->$original."
    ");
    }

    Qualcuno può spiegarmi il perchè?
    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    20

    semplifico

    Forse era troppo contorta, questo esempio è più semplice.

    <?
    class PMessage{
    var $original;
    var $oneadded;
    var $twoadded;
    var $threeadded;

    function PMessage($sender, $receiver){
    $original = $sender;
    $oneadded = $receiver;
    }
    }

    $i = 0;

    $prova = array();
    array_push($prova,new PMessage(1,2));

    //Dovrebbe stampare 1!!!!
    echo(" ---> $i + 0 = ".$prova[$i]->$original."
    ");

    ?>
    A questo punto credo sia un Bug, non c'è male come inizio.
    (spero di essere smentito)
    :master:

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    20

    Me la canto e me la suono

    il problema è il $ dopo il puntatore ->$, se lo tolgo funziona

    Scusate.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.