[PHP] Tablica obiektów

0

Jak w php zrobić tablicę klas? Siedzę nad tym już parę godzin, ale za nic nie chce działać. Mam sobie prostą klasę:

class account{
    var $passwordhash, $accesslevel, $created, $lastlogin, $gametime, $characters, $ips;
}

i tworzę asocjacyjną tablicę obiektów account, ale jak odwołuję się do jakiegoś pola klasy, to automatycznie wszystkie pola ustawiają się na tą wartość. O co chodzi?

0

nie powinno sie odwolywac bezposrednio do pol klasy, ale moze sproboj

var $wart1;
var $wart2;
var $wart3;

za kazdym razem

var

, poza tym to dziwne ze wszystkie ....

a mozesz wkleic kod zywcem z php??

0
function accounts_load($filename){      

    function parsercallback($name, $attribs, $content){
        global $accounts;   
        global $currentuser;     
        if($name=='username'){
            $currentuser=$content; 
            $accounts[$currentuser]=new account;  
        }                     
        if($name=='cryptPassword'){
            $accounts[$currentuser]->$passwordhash=$content;    
        } 
        if($name=='accessLevel'){
            $accounts[$currentuser]->$accesslevel=$content; 
        }               
        if($name=='created'){
            $accounts[$currentuser]->$created=$content; 
        }                
    }   

    $currentuser='';
    $parser=new Path_parser();          
    $parser->set_handler('/accounts/account/username', 'parsercallback');
    $parser->set_handler('/accounts/account/cryptPassword', 'parsercallback');
    $parser->set_handler('/accounts/account/accessLevel', 'parsercallback');
    $parser->set_handler('/accounts/account/created', 'parsercallback');
    $parser->parse_file($filename);
}

$accounts to tablica. I jestem pewien, że w parsercallback() są zwracane dobre wartości.

// Dopisane
Dodam jeszcze, jak to wyświetlam:

foreach($accounts as $name=>$value){

    echo($name.' ('.$accounts[$name]->$accesslevel.') - '.$accounts[$name]->$passwordhash.'<br>');

}

// Dopisane 2
Dodałem sobie do klasy dwie funkcje, czytającą i zapisującą zmienne, żeby nie odwoływać się do pól bezpośrednio. Efekt identyczny...

    function writevalue($var, $value){
        $this->$$var=$value;
    }                       

    function readvalue($var){
        return $this->$$var;
    }

// Dopisane 3
Fak, ale przeoczenie... [wstyd] Dzięki!

0
thenkles napisał(a)
......
$accounts[$currentuser]->$passwordhash=$content;
......

i tu jest blad!!
Gdzie?? "$passwordhash"
jak juz odnosisz sie do pol jakiejs klasy nie piszesz $
czyli jak w klasie chcesz sie odwolac do jej zmiennych nie napiszesz

$this->$zmienna

tylko $this->zmienna


czyli powinno byc
```php
......
$accounts[$currentuser]->passwordhash=$content;
......

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: PetalBot