Hola a todos!
Estuve leyendo sobre si es una buena practica guardar objetos en sesiones, pero no termina de quedarme del todo claro.. Les pongo lo ultimo encontrado en
StackOverflow..
No se si dependera de cada caso si es viable (o optimo?) hacer esto. que creen?
Si tomo como ejemplo el carrito creado
aqui, se guarda el objeto en la sesion luego de realizar todas las acciones, pero no se trabaja directamente en ella.. (yo estoy intentando trabajar directamente con los objetos en la sesion como veran debajo).
Mi situacion es la siguiente:
- al loguearse un usuario, se crea un objeto usuario con algunas propiedades.
- si es particular y establecimiento, creo objetos dentro de esas propiedades en usuario.
- si crea avisos, estos se guardaran en la propiedad "avisos"(array) en Usuario. Y con ellos realizare acciones.
En cada clase a usar (usuario, particular, establecimiento, etc) tengo un constructor que llama a la clase conexion y conecta.
La clase conexion, es similar al ultimo link (al del carrito) y tiene un destructor que la cierra.
Código:
// En class.login.php si es exitoso
require_once('class.usuario.php');
require_once('class.particular.php');
require_once('class.establecimiento.php'); // el usuario puede ser solo "usuario" o "usuario particular" o " usuario particular establecimiento"
$_SESSION['usuario'] = new Usuario($this->_userid);
$temp_particular = new Particular($this->_userid);
if($temp_particular->esParticular == true): $_SESSION['usuario']['particular'] = $temp_particular; endif;
unset($temp_particular);
$temp_establecimiento = new Establecimiento($this->_userid);
if($temp_establecimiento->esEstablecimiento == true): $_SESSION['usuario']['establecimiento'] = $temp_establecimiento; endif;
unset($temp_establecimiento);
Luego, en la pagina de datos de usuario por ej, lo que hago es:
Código:
require_once($path.'class.usuario.php');
require_once($path.'class.particular.php');
require_once($path.'class.establecimiento.php');
session_start();
Nombre del particular: <?php echo $_SESSION['usuario']->particular->nombre;?>
Nombre del establecimiento: <?php echo $_SESSION['usuario']->establecimiento->nombre;?>
Si bien esto funciona y devuelve los datos, al final de la pagina aparece este error:
Código:
Warning: mysqli::close() [mysqli.close]: Couldn't fetch mysqli in C:\xampp\htdocs\!clasificados\inc\class\class.conexion.php on line 46
Aparece repetido 3 veces (por la llamada a conexion dentro de usuarios, particular y establecimientos).
Pero no entiendo porque..
espero puedan ayudarme,
saludos!!