Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

everton_boff

Erro em um Array

Recommended Posts

Boa noite,

estou com o erro abaixo, já alterei

 

Fatal error: Cannot use object of type Carrinho as array in D:\web\localuser\samburaonline\www\pedido\teste\classes\Carrinho.class.php on line 18

 

 

Já alterei o arquivo e não consegui entender, linha que dá o erro:

 

if(!isset($_SESSION['carrinho'][$indice])){
$_SESSION['carrinho'][$indice] = (int)$qtd;
}

 

 

index.php

<?php
	session_start();
	function __autoload($classe){
		require_once('classes/'.$classe.'.class.php');
	}
	BD::conn();

	$carrinho = new Carrinho() ;

	if(isset($_POST['acao']) && $_POST['acao'] == 'add'){
		$id_produto = (int)$_POST['id'];
		$qtd = (int)$_POST['qtd'];
		$forma = (isset($_POST['forma'])) ? $_POST['forma'] : null;

		$carrinho->adicionarProdutos($id_produto, $qtd, $forma);
		
	}

	if(isset($_SESSION['carrinho'])){
		echo '<pre>';
		print_r($_SESSION['carrinho']);
	}

	$produtos = $carrinho->listarProdutos();
	$total = $carrinho->valorTotal();

?>

Carrinho.class.php

<?php
	final class Carrinho{

		public function __construct(){
			if(!isset($_SESSION['carrinho'])){
				$_SESSION['carrinho'] = array();
			}
		}

		public function adicionarProdutos($id, $qtd = 1, $form_id = null){

			if(is_null($form_id)){
				$indice = sprintf("%s:%s", (int)$id, 0);
			}else{
				$indice = sprintf("%s:%s", (int)$id, (int)$form_id);
			}

			if(!isset($_SESSION['carrinho'][$indice])){
				$_SESSION['carrinho'][$indice] = (int)$qtd;
			}
		}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A maneira como você está acessando o objeto Carrinho está errada, porque você está usando o formato de array.

 

Lembre-se:

Array = $variavel[indice]

Objeto = $variavel->indice

 

Embora não seja a maneira mais recomendável de interagir com os objetos, deve funcionar (mas só se existir a propriedade).

 

A maneira mais sugerida é criar métodos para alteração desses dados, como um setQuantidade(), por exemplo.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.