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!