Adding objects to the array

3

I have the following error:

<?php
class CarrinhoDao {
  private $carrinhoDao = Array();

  public function __construct() {

  }

  public function insereProduto($_produto) {
 $carrinhoDao[] = $_produto;

    print "<pre>";
    print_r($carrinhoDao[]);
    print "</pre>"; 
  }

  public function getCarrinho () {
 return $this->carrinhoDao;
  }
}
?>

It inserts objects of the Products Class in the $ cartDao array. This is working correctly because at the end of running the code below:

....
$produto1 = new Produtos(10, 2, "TesteA", "pmg", 124, 13.40, "n", "", "n");
$produto2 = new Produtos(11, 1, "TesteB", "pmg", 12, 13, "n", "", "n");
$produto3 = new Produtos(12, 2, "TesteC", "pmg", 1, 13.04, "n", "", "n");

$produto1->setIdProdutos(1);
$produto2->setIdProdutos(2);
$produto3->setIdProdutos(3);


$CarrinhoDao->insereProduto($produto1);
$CarrinhoDao->insereProduto($produto2);
$CarrinhoDao->insereProduto($produto3);
....

The output of print_r is:

Array
(
    [0] => Produtos Object
        (
            [idProdutos:Produtos:private] => 
            [codigoProdutos:Produtos:private] => 10
            [tipo:Produtos:private] => 2
            [nome:Produtos:private] => TesteA
            [tamanho:Produtos:private] => pmg
            [estoque:Produtos:private] => 124
            [preco:Produtos:private] => 13.4
            [promo:Produtos:private] => n
            [imagem:Produtos:private] => 
            [reservado:Produtos:private] => n
        )

)
Array
(
    [0] => Produtos Object
        (
            [idProdutos:Produtos:private] => 
            [codigoProdutos:Produtos:private] => 11
            [tipo:Produtos:private] => 1
            [nome:Produtos:private] => TesteB
            [tamanho:Produtos:private] => pmg
            [estoque:Produtos:private] => 12
            [preco:Produtos:private] => 13
            [promo:Produtos:private] => n
            [imagem:Produtos:private] => 
            [reservado:Produtos:private] => n
        )

)
Array
(
    [0] => Produtos Object
        (
            [idProdutos:Produtos:private] => 
            [codigoProdutos:Produtos:private] => 12
            [tipo:Produtos:private] => 2
            [nome:Produtos:private] => TesteC
            [tamanho:Produtos:private] => pmg
            [estoque:Produtos:private] => 1
            [preco:Produtos:private] => 13.04
            [promo:Produtos:private] => n
            [imagem:Produtos:private] => 
            [reservado:Produtos:private] => n
        )

)

But the output of the function

...
  public function getCarrinho () {
 return $this->carrinhoDao;
  }
...

is an empty array:

Array
(
)

How to solve this?

    
asked by anonymous 17.12.2015 / 13:07

1 answer

3

This is because in your insereProduto function you are not using the array of the class, it should look like this:

$this->carrinhoDao[] = $_produto;

Or, with index based on id :

public function insereProduto($_produto) 
{
    $this->carrinhoDao[$_produto->getID()] = $_produto;
}
    
17.12.2015 / 13:16