Examples for presentation.
This commit is contained in:
58
sources/Example/Good/Product.php
Normal file
58
sources/Example/Good/Product.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace Example\Good;
|
||||
|
||||
class Product
|
||||
{
|
||||
public string $sku = '';
|
||||
public int $quantity = 0;
|
||||
public float $price = 0;
|
||||
|
||||
public function setSku(string $sku): Product
|
||||
{
|
||||
$this->sku = $sku;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setQuantity(int $quantity): Product
|
||||
{
|
||||
$this->quantity = $quantity;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setPrice(float $price): Product
|
||||
{
|
||||
$this->price = $price;
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Instead of this better to use some DAO lib like JMSSerializer, or cuyz/valinor.
|
||||
*/
|
||||
public function setData(array $data): Product {
|
||||
$this->sku = $data['sku'] ?? '';
|
||||
$this->quantity = $data['amount'] ?? 0;
|
||||
$this->price = $data['price'] ?? 0;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Product[] $destinationProducts
|
||||
* @param Product[] $sourceProducts
|
||||
*/
|
||||
public static function copyQuantities(array $destinationProducts, array $sourceProducts ) {
|
||||
$indexedBySku = [];
|
||||
foreach ($destinationProducts as $destinationProduct) {
|
||||
$indexedBySku[$destinationProduct->sku] = $destinationProduct;
|
||||
}
|
||||
|
||||
foreach ($sourceProducts as $sourceProduct) {
|
||||
if ( !array_key_exists($sourceProduct->sku, $indexedBySku) ) {
|
||||
continue;
|
||||
}
|
||||
$indexedBySku[$sourceProduct->sku]->setQuantity($sourceProduct->quantity);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user