Carlos Rocha Posted December 17, 2015 at 12:01 PM Report Share #590785 Posted December 17, 2015 at 12:01 PM (edited) Tenho o dao abaixo: <?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; } } ?> Ele insere objetos da Classe Produtos no array $carrinhoDao. Isso esta a funcionar corretamente pois ao final da rodagem do código abaixo: .... $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); .... A saída do print_r é: 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 ) ) Mas a saída da função ... public function getCarrinho () { return $this->carrinhoDao; } ... é um array vazio: Array ( ) Como resolver isso? Edited December 17, 2015 at 12:16 PM by carcleo Link to comment Share on other sites More sharing options...
Carlos Rocha Posted December 17, 2015 at 12:21 PM Author Report Share #590787 Posted December 17, 2015 at 12:21 PM Já descobri. Isso é porque na função insereProduto eu não usei o array da classe, deveria ser assim: $this->carrinhoDao[] = $_produto; Resolvido! Link to comment Share on other sites More sharing options...
Carlos Rocha Posted December 17, 2015 at 03:48 PM Author Report Share #590790 Posted December 17, 2015 at 03:48 PM Me deparei com uma situação difícil agora. Preciso remover um item nesse array. Alterei a classe DAO para: <?php class CarrinhoDao { private $carrinhoDao = Array(); private $cont = 0; public function __construct() { } public function insereProduto($_produto, $_qtde) { $this->carrinhoDao[$this->cont][0] = $_produto; $this->carrinhoDao[$this->cont][1] = $_qtde; $this->cont++; } public function getCarrinho () { return $this->carrinhoDao; } } ?> Agora, o objeto CarrinhoDao terá 2 índices para cada índice primário: 0 -: Objeto Produto 1 - Quantidade Como posso remover 1 ítem nesse objeto do CarrinhoDao? Já usei array_splice e unset e não funcionam pois são funçoes de arrays. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 17, 2015 at 06:03 PM Report Share #590793 Posted December 17, 2015 at 06:03 PM - ciclo de pesquisa do objecto - se o elemento iterado do carrinho for o elemento a ser decrementado - se a quantidade for 1 - remover produto - caso contrário - decrementar a quantidade IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Carlos Rocha Posted December 17, 2015 at 08:30 PM Author Report Share #590797 Posted December 17, 2015 at 08:30 PM tenho a seguinte classe `CarrinhoDao.php` que cria um array de objetos de `Carrinho.php` que cria um objeto da classe `Produto.php` Estou fazendo um `foreach` no array resultante: <?php require_once "controlls/util/Conexao.php"; require_once "controlls/models/Produtos.php"; require_once "controlls/models/Carrinho.php"; require_once "controlls/daos/ProdutosDao.php"; require_once "controlls/daos/CarrinhoDao.php"; require_once "controlls/util/PhpUtil.php"; $connection = new Conexao(); $conexao = $connection->abreConexao(); $CarrinhoDao = new CarrinhoDao(); $produtoDao = new ProdutosDao($conexao); $produtoDao = new CarrinhoDao($conexao); $phpUtil = new PhpUtil(); $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(2); $CarrinhoDao->insereProduto($produto1, 1); $CarrinhoDao->insereProduto($produto2, 2); $CarrinhoDao->insereProduto($produto3, 3); print "<pre>"; print_r($CarrinhoDao->getCarrinho()); print "</pre>"; foreach ($CarrinhoDao->getCarrinho() as $produto) { print "Key:".$produto->getKey()."<br>"; print "Nome: ".$produto[0]->getNome()."<br>"; print "Quantidade: ".$produto[1]."<br><br>"; } ?> Isso esta me trazendo o seguinte: Array ( [0] => Array ( [0] => Produtos Object ( [idProdutos:Produtos:private] => 1 [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 ) [1] => 1 ) [1] => Array ( [0] => Produtos Object ( [idProdutos:Produtos:private] => 2 [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 ) [1] => 2 ) [2] => Array ( [0] => Produtos Object ( [idProdutos:Produtos:private] => 2 [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 ) [1] => 3 ) ) preciso pegar o índice do array resultante no foreach para que, se for o caso, possa deletar o produto do carrinho. Fiz a função getKey abaixo mas não estou conseguindo pegar o índice; <?php class CarrinhoDao { private $carrinhoDao = Array(); private $cont = 0; public function __construct() { } public function insereProduto($_produto, $_qtde) { $this->carrinhoDao[$this->cont][0] = $_produto; $this->carrinhoDao[$this->cont][1] = $_qtde; $this->cont++; } public function getCarrinho () { return $this->carrinhoDao; } public function getKey () { return key($this->carrinhoDao); } public function removeItem ($_item) { unset($this->carrinhoDao[$_item]); } public function alteraItem ($_item, $qde) { $this->carrinhoDao[$_item][1] = $qde; } } ?> Classe carrinho: <?php class Carrinho { private $produto; public function __construct($_produto) { $this->produto = $_produto; } public function getProduto () { return $this->produto; } } ?> Como fazer isso? consegui. foio só substituir foreach ($CarrinhoDao->getCarrinho() as $k=>$produto) { print "Key:".$k."<br>"; } Obrigado! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now