From ea61ae5c8d1484703c6230ecb7609013be995258 Mon Sep 17 00:00:00 2001 From: saulius12 Date: Thu, 13 Jun 2019 19:09:58 +0300 Subject: [PATCH] separate into classes --- php7/src/AgedBried.php | 21 ++++++++++- php7/src/BackstagePasses.php | 23 +++++++++++- php7/src/GildedRose.php | 72 ++++++++++++++---------------------- php7/src/Sulfaras.php | 10 ++++- 4 files changed, 78 insertions(+), 48 deletions(-) diff --git a/php7/src/AgedBried.php b/php7/src/AgedBried.php index 5960fcea..abfe684a 100644 --- a/php7/src/AgedBried.php +++ b/php7/src/AgedBried.php @@ -4,7 +4,26 @@ namespace App; -class AgedBried +class AgedBried extends GildedRose { + private $item; + + public function __construct($item) { + $this->item = $item; + } + + public function updateQuality(){ + $this->item->quality += 1; + + if ($this->item->sell_in <= 0) { + $this->item->quality += 1; + } + + if ($this->item->quality > 50) { + $this->item->quality = 50; + } + + $this->item->sell_in -= 1; + } } \ No newline at end of file diff --git a/php7/src/BackstagePasses.php b/php7/src/BackstagePasses.php index adf157d4..6a508d2e 100644 --- a/php7/src/BackstagePasses.php +++ b/php7/src/BackstagePasses.php @@ -4,7 +4,28 @@ namespace App; -class BackstagePasses +class BackstagePasses extends GildedRose { + private $item; + public function __construct($item) { + $this->item = $item; + } + + public function updateQuality(){ + $this->item->quality += 1; + if ($this->item->sell_in <= 10) { + $this->item->quality += 1; + } + if ($this->item->sell_in <= 5) { + $this->item->quality += 1; + } + if ($this->item->quality > 50) { + $this->item->quality = 50; + } + if ($this->item->sell_in <= 0) { + $this->item->quality = 0; + } + $this->item->sell_in -= 1; + } } \ No newline at end of file diff --git a/php7/src/GildedRose.php b/php7/src/GildedRose.php index 44441bb5..3f9e9445 100644 --- a/php7/src/GildedRose.php +++ b/php7/src/GildedRose.php @@ -2,60 +2,42 @@ namespace App; -final class GildedRose { +class GildedRose +{ private $items = []; - public function __construct($items) { + public function __construct($items) + { $this->items = $items; } - public function updateQuality() { + public function updateQuality() + { + $agedBrieName = 'Aged Brie'; + $backstageName = 'Backstage passes to a TAFKAL80ETC concert'; + $sulfarasName = 'Sulfuras, Hand of Ragnaros'; + foreach ($this->items as $item) { - if($item->name == 'Aged Brie'){ - $item->quality += 1; + switch ($item->name) { + case $agedBrieName: + $agedBried = new AgedBried($item); + $agedBried->updateQuality(); + return; - if ($item->sell_in <= 0) { - $item->quality += 1; - } + case $backstageName: + $backstagePasses = new BackstagePasses($item); + $backstagePasses->updateQuality(); + return; - if ($item->quality > 50) { - $item->quality = 50; - } - - $item->sell_in -= 1; - return; - } - - else if($item->name == 'Backstage passes to a TAFKAL80ETC concert'){ - $item->quality += 1; - if ($item->sell_in <= 10) { - $item->quality += 1; - } - if ($item->sell_in <= 5) { - $item->quality += 1; - } - if ($item->quality > 50) { - $item->quality = 50; - } - if ($item->sell_in <= 0) { - $item->quality = 0; - } - $item->sell_in -= 1; - return; - } - - else if ($item->name == 'Sulfuras, Hand of Ragnaros') { - $item->quality = 80; - return; - } - - else { - $item->quality -= 1; - if ($item->sell_in <= 0) { - $item->quality -= 1; - } - $item->sell_in -= 1; + case $sulfarasName: + $sulfaras = new Sulfaras($item); + $sulfaras->updateQuality(); + return; + default: + $defoultItem = new DefaultItem($item); + $defoultItem->updateQuality(); + return; } } } diff --git a/php7/src/Sulfaras.php b/php7/src/Sulfaras.php index 9f6b8ee7..7d7e1179 100644 --- a/php7/src/Sulfaras.php +++ b/php7/src/Sulfaras.php @@ -4,7 +4,15 @@ namespace App; -class Sulfaras +class Sulfaras extends GildedRose { + private $item; + + public function __construct($item) { + $this->item = $item; + } + public function updateQuality(){ + $this->item->quality = 80; + } } \ No newline at end of file