Dragoon 18 de dez. de 2018 1 like
Bom dia Pessoal.
Estou em duvida de como usar objetos em sessão no php. Vi que tem outros tópicos sobre esse assunto mas não tiraram minha duvida.
Já li sobre serialize() e unserealize() mas acho que não entendi direito como usar.
No meu projeto eu passo um objeto para sessão e quando vou acessar esse objeto da um erro., dei um var_dump() nele e o objeto fica como _php_incomplete_class
Não estou conseguindo usar esse objeto.
Alguém poderia me explicar melhor?
Obrigado.
poste o código! sem código ficamos se saber o real problema
Yehhdeivid 18 de dez. de 2018
Tem bastante código. vou tentar colocar as partes especificas.
< ? php
namespace App \Controllers ;
use App \Models \DAO \UsuarioDAO ;
use App \Models \DAO \AtividadeAcademicaDAO ;
use App \Lib \Sessao ;
use App \Models \Entidades \TipoDissertativa ;
use App \Models \DAO \TipoDissertativaDAO ;
class CadastroQuestaoController extends Controller {
private $ usuario ;
private $ atividadeAcademicaDAO ;
private $ usuarioDAO ;
private function initCadastro (){
$ this -> usuarioDAO = new UsuarioDAO ();
$ this -> atividadeAcademicaDAO = new AtividadeAcademicaDAO ();
$ this -> usuario = $ this -> usuarioDAO -> findById ( $ _SESSION [ 'id' ]);
$ this -> usuario -> setAtividadesAcademicas ( $ this -> atividadeAcademicaDAO -> findAtividadesAcademicasByUsuario ( $ _SESSION [ 'id' ]));
if ( isset ( $ _SESSION [ 'atividadeAcademicaAtual' ])) {
$ _SESSION [ 'atividadeAcademicaAtual' ] = $ this -> usuario -> getAtividadesAcademicas ()[ 0 ];
}
}
public function dissertativa () {
$ this -> initCadastro ();
$ this -> setViewParam ( 'atividadesAcademicas' , $ this -> usuario -> getAtividadesAcademicas ());
if ( isset ( $ _SESSION [ 'novaAtividade' ])){
$ _SESSION [ 'atividadeAcademicaAtual' ] = $ _SESSION [ 'novaAtividade' ];
unset ( $ _SESSION [ 'novaAtividade' ]);
}
$ this -> render ( '/cadastro/dissertativa' );
Sessao :: limpaMensagem ();
}
public function alteraAtividadeAcademica () {
$ atividadeAcademicaDAO = new AtividadeAcademicaDAO ();
$ _SESSION [ 'novaAtividade' ] = $ atividadeAcademicaDAO -> findById ( $ _POST [ 'idAA' ]);
var_dump ( unserialize ( $ _SESSION [ 'novaAtividade' ])); var_dump ( $ _SESSION [ 'atividadeAcademicaAtual' ]);
//$ this -> redirect ( '/cadastroquestao/dissertativa' );
}
}
Eu tento usar essa sessão aqui:
<div class= "col-md-6" >
<h1>
<?php echo isset ( $_SESSION [ 'atividadeAcademicaAtual' ]) ? $_SESSION [ 'atividadeAcademicaAtual' ] -> getDescricao () : "Não está vinculado a uma Atividade Acadêmica" ; ?>
</h1>
</div>
Yehhdeivid 18 de dez. de 2018 2 likes
Consegui resolver.
class Sessao {
public static function setAtitivadeAcademicaAtual ($atividade ){
$aux = serialize ($atividade );
$_SESSION ['atividadeAcademicaAtual' ] = $aux ;
}
public static function getAtividadeAcademicaAtual (){
$aux = unserialize ($_SESSION ['atividadeAcademicaAtual' ]);
return $aux ;
}
Controller :
private function initCadastro () {
$this->usuarioDAO = new UsuarioDAO() ;
$this->atividadeAcademicaDAO = new AtividadeAcademicaDAO() ;
$this->usuario = $this->usuarioDAO->findById($_SESSION [ 'id' ] ) ;
$this->usuario->setAtividadesAcademicas($this->atividadeAcademicaDAO->findAtividadesAcademicasByUsuario($_SESSION [ 'id' ] )) ;
if(!isset($_SESSION [ 'atividadeAcademicaAtual' ] )){
Sessao : : setAtitivadeAcademicaAtual ( $ this - > usuario - > getAtividadesAcademicas () [ 0 ] );
}
}
public function alteraAtividadeAcademica () {
$atividadeAcademicaDAO = new AtividadeAcademicaDAO() ;
Sessao : : setAtitivadeAcademicaAtual ( $ atividadeAcademicaDAO - > findById ( $ _POST [ 'idAA' ] ));
$this->redirect('/cadastroquestao/dissertativa') ;
}
Front:
<div class= "col-md-6" >
<h1>
<?php echo isset ( $_SESSION [ 'atividadeAcademicaAtual' ]) ? Sessao :: getAtividadeAcademicaAtual () -> getDescricao () : "Não está vinculado a uma Atividade Acadêmica" ; ?>
</h1>
</div>
</div>