Chcę stworzyć klasę Koszyk działającą w oparciu o plik XML.
Mam jednak problem z kilkukrotnym dodawaniem tego samego przedmiotu.
Moja metoda dodająca produkty do pliku wygląda tak:
Kod
public function addItem($itemId, $itemQuantity){
$this->createCard();
$xml = new SimpleXMLElement(self::CARDS_DIR.$this->cardName.'.xml', NULL, true);
$item = $xml->addChild('item');
if(! in_array($itemId,$xml->xpath('//id'))){ //z tą linijką mam problem:/
$item->addChild('id', $itemId);
$item->addChild('quantity', $itemQuantity);
}else{
//kombinuj z powtórkami!
}
$xml->asXML(self::CARDS_DIR.$this->cardName.'.xml');
}
$this->createCard();
$xml = new SimpleXMLElement(self::CARDS_DIR.$this->cardName.'.xml', NULL, true);
$item = $xml->addChild('item');
if(! in_array($itemId,$xml->xpath('//id'))){ //z tą linijką mam problem:/
$item->addChild('id', $itemId);
$item->addChild('quantity', $itemQuantity);
}else{
//kombinuj z powtórkami!
}
$xml->asXML(self::CARDS_DIR.$this->cardName.'.xml');
}
Troche kombinowałem ale niestety bezskutecznie.
Plik XML wygląda tak:
Kod
<items>
<item>
<id>
klawiatura
</id>
<quantity>
2
</quantity>
</item>
<item>
<id>
klawiatura
</id>
<quantity>
2
</quantity>
</item>
</items>
<item>
<id>
klawiatura
</id>
<quantity>
2
</quantity>
</item>
<item>
<id>
klawiatura
</id>
<quantity>
2
</quantity>
</item>
</items>
Jak zmienić metodę addItem, aby w razie istnienia produktu w pliku, jedynie zwiększała jego ilość, a nie dodawała nowy węzeł <item />.
Pozatym to co sądzicie o takim podejściu do budowy koszyka?