Sending an object through Session

Asked

Viewed 254 times

5

I have the following object

$compra = new Compra($usuario, $produto_comprado, $cep['cep'], $soma_produtos);

When I try to add it into one $_SESSION[] and I try to get it on another page, it returns me it returns me __PHP_Incomplete_Class in a var_dump();

In the attribute $produto_comprado 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 buys:

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;
    }




}

There is a better way for me to send the data of this object to another page?

  • Apparently there is something in your object that needs to be rebuilt. From a var_dump on it to see what it has.

  • I changed the answer.

  • @Marcosregis Dei var_dump() and he brings me all the values....

1 answer

4


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 get back to normal, all you have to do is recover like this:

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

References:

Php documentation

Serialization of SESSION objects in PHP

Soen

  • The output is the same, @Diegofelipe.... http://i.imgur.com/oERoTM9.png

  • @Naldson add more code to your question, as the Purchase class is the widest chunk of code that transfers the object between sessions, maybe the problem is not well there.

  • 1

    Of course!! Missed even the only request the class Shopping where I took the session... Thank you very much! ;)

  • But, @Diegofelipe... When I var_dump $Copra->getProdutoComprado() it returns me __Php_incomplete_class again... different from other data....

  • @Naldson require_once your purchase class at the beginning of every php script you need to handle this class. The problem of appearing this class is because I don’t know the definition of the purchase class.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.