Witam.
Piszę w tej chwili pewien prosty systemik i jakoś nie mogę sobie proadzić z jednym błędem.
Przy parsacji pliku xml są wywoływane trzy funkcje: jedna od otwierającego taga, druga od zamykającego i trzecia od danych, które są pomiędzy tagami.
Pierwsza funkcja ma tylko sygnalizować jaki był ostatni tag, żeby było wiadomo do czego przypisać dane.
[php:1:48e64b6d6c]
<?php
function userStartHandler($parser, $name, $attrs)
{ global $last_tag;
switch($name)
{ case 'LOGIN':
$last_tag = 'login';
break;
case 'PASSWORD':
$last_tag = 'password';
break;
case 'NAME':
$last_tag = 'name';
break;
case 'SURNAME':
$last_tag = 'surname';
break;
default:
$last_tag = 'inny';
break;
}
}
?>
[/php:1:48e64b6d6c]
Ona działa dobrze, sprawdziłem to.
Druga funkcja jest pusta, więc przejdę do trzeciej, która wydaje się być niepoprawna.
[php:1:48e64b6d6c]<?php
function userDataHandler($parser, $data)
{ global $last_tag, $current_user;
switch($last_tag)
{ case 'login' :
$current_user['login'] = $data;
echo "$current_user[login]";
break;
case 'password' :
$current_user['password'] = $data;
echo "$current_user[password]";
break;
case 'name' :
$current_user['name'] = $data;
echo "$current_user[name]";
break;
case 'surname' :
$current_user['surname'] = $data;
echo "$current_user[surname]";
break;
case 'inny' :
break;
}
}
?>[/php:1:48e64b6d6c]
Wszystkie isntrukcje echo zadziałają w tym switchu, ale po zakończeniu tej funkcji, globalna zmienna jest pusta, a wcześniej miała wartość. Co się dzieje? Troszke mi się z tym śpieszy, więc prosiłbym o wyrozumiałóść i jak najszybsze odpowiedzi.
Z góry dzięki.