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:
Luego, en la pagina de datos de usuario por ej, lo que hago es:// 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);
Código:
Si bien esto funciona y devuelve los datos, al final de la pagina aparece este error: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;?>
Código:
Aparece repetido 3 veces (por la llamada a conexion dentro de usuarios, particular y establecimientos).Warning: mysqli::close() [mysqli.close]: Couldn't fetch mysqli in C:\xampp\htdocs\!clasificados\inc\class\class.conexion.php on line 46
Pero no entiendo porque..
espero puedan ayudarme,
saludos!!