TRabalhando com sessao no yii

Estou fazendo o carrinho de compra no yii por sessão, e estou fazendo assim:


$session = Yii::app()->session;

$session['carrinho'][$id] = $qtde;

Ta a minha duvida é:

  • Esta é a melhor forma ou tem um jeito mais correto de usar?

  • tipo como pode ver eu estou colocando o nome de carrinho desta forma é correto?

  • Tem outra forma mais facil de lidar com sessao no yii?

  • Eu tenho um controller carrinho eu tenho que instaciar a sessao em todos os action ou tem como instanciar uma unica vez?

Bom é isso so gostaria de alguma dicas.

Esta é a melhor forma ou tem um jeito mais correto de usar?

R: Que eu saiba, sim, vc pode ter alguns problemas de lentidão que nem eu tive se vc tiver muitos dados na sessão, mas, no meu caso, eu tenho alguns lugares que necessito de cerca de 1000 registros na sessão. Por isso eu começei a usar o cache pra guardar estes dados simulando uma sessão.Ficou mais rápido, mas só em volumes de dados muito grandes. Se vc não tiver uma quantidade tão grande, eu aconselharia a continuar usando sessão, pq o trabalho não compensa.

Tipo como pode ver eu estou colocando o nome de carrinho desta forma é correto?

R: Eu criaria um parâmetro no config e usaria ele no local que precisar do carrinho. Não que esteja incorreto, mas eu gosto de deixar as coisas o máximo configuráveis.

Tem outra forma mais facil de lidar com sessao no yii?

R: Não que eu saiba.

Eu tenho um controller carrinho eu tenho que instaciar a sessao em todos os action ou tem como instanciar uma unica vez?

R: Da forma que vc está fazendo, vc está pegando uma cópia do objeto de sessão que o Yii disponibiliza, eu acho que o melhor é vc fazer $session = &Yii::app()->session. Usando o "&" vc pegaria o objeto já instanciado pelo Yii, economizando memória ao invez de uma cópia dele.

Eu gosto de usar os metodos setState e getState do Yii:app()->user para trabalhar com variaveis de sessao.

Mas de repente o seu jeito seria mais pratico mesmo…

He acabei usando o tradicionar neste sistema pois estava dando erro e como o tempo nao deixava, mais vou fazer um grande ai eu vou usar o do yii

Mais valeu galera!!!