Uma outra forma que uso em um sistema meu e tem se comportado bem é usar uma classe básica do php em uma sessão e ir adicionando atributos nela.
Global de Sistema
- Váriáveis Globais: Sessão: Sim, Get e Post: Não, Saída: Sim.
No login:
onAppInit:
[iwg] = new StdClass; //[iwg] é sessão, e g de global.
na onvalidate:
[iwg]->login = $usr_login;
[iwg]->empId = $empresaCodigo;
[iwg]->usrNome = $nomeUsuario;
[iwg]->empNome = $nomeEmpresa;
Em todas demias aplicações nunca atribulo valor ara essa global, apenas uso com litura
Global de Ligação
- quando quero passar parâmetros:
app chamadora:
[iwl] new stClass;
[iwl]->clienteId = {clienteId};
app chamada:
echo [iwl]->clienteId; //iwl -> L de ligação
unset([iwl]); //sempre destruo global de ligação de pois de usar.
Global de uso local (apenas dentro da própria app)
onAppInit: /Variáveis Globais: Sessão:Não, Get: Não, Post:Não, Opcional:Sim, Saída:Sim
[iw] = new stdClass; //só iw é uma gobal local.
[iw]->counter =0
nos eventos:
[iw]->counter++;
echo [iw]->counter;
iw -> é uma sigla que uso padrão minha (InfinitusWeb).
Aqui penso em criar uma Biblioteca externa que terá uma flag Degug, que se ativa fica gravando em banco de dados todas as [iw`*´] com seus valores atribuídos em cada evento , para analise dos dados em sessão no tempo através de relatórios para avaliar possíveis falhas do sistema.