Advertisement
zukars3

ProductList.php

Apr 2nd, 2020
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.00 KB | None | 0 0
  1. <?php
  2.  
  3. class ProductList
  4. {
  5.     private $products;
  6.  
  7.     public function __construct(array $products = [])
  8.     {
  9.         $this->products = $products;
  10.     }
  11.  
  12.     public function loadProducts(): void
  13.     {
  14.         $csvData = array_map('str_getcsv', file('products.csv'));
  15.         $csvHeader = $csvData[0];
  16.         unset($csvData[0]);
  17.  
  18.         $this->products = [];
  19.  
  20.         foreach ($csvData as $row) {
  21.             $row = array_combine($csvHeader, $row);
  22.             $this->products[$row['name']] = new Product($row['name'], $row['amount'], $row['type']);
  23.         }
  24.  
  25.     }
  26.  
  27.     public function save(): void
  28.     {
  29.  
  30.         $file = fopen("products.csv", "w");
  31.  
  32.         $header = ['name', 'amount', 'type'];
  33.         fputcsv($file, $header);
  34.  
  35.         foreach ($this->products as $product) {
  36.             fputcsv($file, [$product->getName(), $product->getAmount(), $product->getType()]);
  37.         }
  38.  
  39.         fclose($file);
  40.     }
  41.  
  42.     public function addProduct(string $name, float $amount, string $type): void
  43.     {
  44.         $product = new Product($name, $amount, $type);
  45.         $this->products[$name] = $product;
  46.         $this->save();
  47.     }
  48.  
  49.     public function editProduct(string $name, float $amount): void
  50.     {
  51.         $this->products[$name]->setAmount($amount);
  52.         $this->save();
  53.     }
  54.  
  55.     public function removeProduct(string $name): void
  56.     {
  57.         unset($this->products[$name]);
  58.         $this->save();
  59.     }
  60.  
  61.     public function checkExistance(string $name): ?string
  62.     {
  63.         foreach ($this->products as $product) {
  64.             if ($product->getName() == $name) return $product->getType();
  65.         }
  66.         return false;
  67.     }
  68.  
  69.     public function showProducts(): array
  70.     {
  71.         $result = [];
  72.  
  73.         foreach ($this->products as $product) {
  74.             $result[] = $product->getName() . ' | ';
  75.             $result[] = $product->getAmount() . ' | ';
  76.             $result[] = $product->getType() . " |\n";
  77.         }
  78.         return $result;
  79.     }
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement