Sending an object through Session

4

I have the following object

$compra = new Compra($usuario, $produto_comprado, $cep['cep'], $soma_produtos);
When I try to add it to a $_SESSION[] and try to get it on another page, it returns me it returns __PHP_Incomplete_Class in a var_dump ();

In the $produto_comprado attribute I try to insert an array as follows:

$produtos = $lista->listaProdutos($conexao, $usuario);

$produto_comprado = array();
foreach ($produtos as $row) {
    array_push($produto_comprado, $produto);
}

My class purchases:

class Compra
{
    private $usuario;
    private $produto_comprado;
    private $cep;
    private $modo_pagamento;
    private $total;

    public function __construct($usuario, $produto_comprado, $cep, $total)
    {
        $this->usuario = $usuario;
        $this->produto_comprado = $produto_comprado;
        $this->cep = $cep;
        $this->total = $total;
    }

    /**
     * @return mixed
     */
    public function getUsuario()
    {
        return $this->usuario;
    }

    /**
     * @param mixed $usuario
     */
    public function setUsuario($usuario)
    {
        $this->usuario = $usuario;
    }

    /**
     * @return mixed
     */
    public function getProdutoComprado()
    {
        return $this->produto_comprado;
    }

    /**
     * @param mixed $produto_comprado
     */
    public function setProdutoComprado($produto_comprado)
    {
        $this->produto_comprado = $produto_comprado;
    }

    /**
     * @return mixed
     */
    public function getCep()
    {
        return $this->cep;
    }

    /**
     * @param mixed $cep
     */
    public function setCep($cep)
    {
        $this->cep = $cep;
    }

    /**
     * @return mixed
     */
    public function getModoPagamento()
    {
        return $this->modo_pagamento;
    }

    /**
     * @param mixed $modo_pagamento
     */
    public function setModoPagamento($modo_pagamento)
    {
        $this->modo_pagamento = $modo_pagamento;
    }

    /**
     * @return mixed
     */
    public function getTotal()
    {
        return $this->total;
    }

    /**
     * @param mixed $total
     */
    public function setTotal($total)
    {
        $this->total = $total;
    }




}

Is there a better way for me to send this object's data to another page?

    
asked by anonymous 14.11.2015 / 21:32

1 answer

3

Serialize the object like this:

session_start(); // isso tem que ficar como primeira linha do codigo
$compra = new Compra($usuario, $produto_comprado, $cep['cep'], $soma_produtos);
$_SESSION['compra'] = serialize($compra);

Then, to return to normal, just recover this way:

session_start();
require_once(SuaClasseCompra.php);
$compra = unserialize($_SESSION['compra']);

References:

php documentation

Serialization of objects in SESSION in PHP

SOEn

    
14.11.2015 / 21:38