DivMan

Добавление товара в корзину и удаление

2 сообщения в этой теме

Если добавлять одинаковые товары, то по логике свойство numberProduct должно увеличиваться на 1. 

Оно увеличивается только 1 раз , но почему-то не сохраняется?

Помогите пожалуйста, я уже 3 часа мучаюсь.

23 строка

<?php

abstract class Product{
	public $title;
    public $price;
	public $numberProduct;
	
	public function __construct($title, $price, $numberProduct = 1){
		$this->title = $title;
		$this->price = $price;
		$this->numberProduct = $numberProduct;
	}
}

class Cart{
	public $countProduct = [];
	
	public function addProduct($product){
		
		if(array_key_exists($product->title, $this->countProduct)){
			$res =  $product->numberProduct = $product->numberProduct+ 1;
			echo 'Товар добавлен в корзину<br>';
			return $res;
		}
		else{
			$this->countProduct[$product->title] = $product;
			echo 'Товар добавлен в корзину<br>';
		}
		
	}
	
	public function deleteProduct($product){
		echo $product->title . ' удалён';
		unset($this->countProduct[$product->title]);
	}
}

class Planshet extends Product{}

$planshet = new Planshet('Asus', 2000);
$planshet2 = new Planshet('Lenovo', 3000);
$planshet3 = new Planshet('Lenovo', 3000);
$planshet4 = new Planshet('Lenovo', 3000);
$planshet5 = new Planshet('Lenovo', 3000);


$korzina = new Cart();

$korzina->addProduct($planshet); //добавляю товар в корзину
$korzina->addProduct($planshet2); //добавляю товар в корзину
$korzina->addProduct($planshet3); //добавляю товар в корзину
$korzina->addProduct($planshet4); //добавляю товар в корзину
$korzina->addProduct($planshet5); //добавляю товар в корзину


echo '<pre>';
var_dump($korzina->countProduct);
echo '</pre>';

$korzina->deleteProduct($planshet); //удаляю из корзины

echo '<pre>';
var_dump($korzina->countProduct);

 

Изменено пользователем DivMan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если вы про свойство numberProduct у экземпляров класса Product, то оно у каждого из этих классов свое (не общее) и соответственно увеличивается на один у каждого из этих экземпляров т.к. вы в addProduct передаете каждый раз новый экземпляр класса Product. Возможно, вам нужно объявить это свойство как static и обращаться к нему через self для получения ожидаемого эффекта.

Изменено пользователем ows.nightwolf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас