Обращение к свойствам переданного объекта

DivMan

Новичок
Вот такая проблема, количество товаров нормально считает, а вот цену не правильно, если добавить 4 одинаковых товара, стоимостью 2000, то должно получится 8000, а получается 16 000, почему?

И почему не узнаётся цена добавленного товара?

Я же говорю ей, возьми общую цену у товаров, которые лежат в корзине и добавь к ним цену нового товара, а получается, что складывается общая цена и общая цена.

PHP:
<?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)){
            $this->countProduct[$product->title]->numberProduct++;
            
            //$this->countProduct[$product->title]->price += 2000;
            
            $this->countProduct[$product->title]->price += $product->price;
    
        var_dump($product->price);
        
        echo 'Товар добавлен в корзину<br>';
        echo 'Количество ' . $product->numberProduct . '<br>';
        echo '<br>';
        
        }
        else{
            $this->countProduct[$product->title] = $product;
        }
    }
    
    public function showAllProduct(){ //показать список продуктов и количество
        foreach($this->countProduct as $key => $value){
            echo 'Товар ' . $key . ' количество ' . $value->numberProduct . '<br>';
        }
        echo '<pre>';
        var_dump($this->countProduct);
    }
}

class Planshet extends Product{}

$asus = new Planshet('Asus', 2000);

$korzina = new Cart();

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

$korzina->showAllProduct();

echo $asus->price;
 

WMix

герр M:)ller
Партнер клуба
2000 + 2000 = 4000
4000 + 4000 = 8000

PHP:
$korzina->addProduct($asus);
print_r($asus);
не понятно зачем меняешь цену продукта, сумма = цена * колво
 

antson

Новичок
Партнер клуба
@DivMan, в реальности название продукта не уникально.
в принципе любой признак (артикул,штрихкод и т.д.) тоже
Рассмотрим случай стоковского товара . Чем он отличается от нормального ? только наличием мелкого дефекта и сниженной ценой.
Так, что вводи уникальный внутренний идентификатор.
 
Сверху