public function test()
 {
     $received = "";
     $items = $this->makeItems();
     $sut = new GildedRose($items);
     for ($day = 1; $day <= 100; $day++) {
         $received .= $this->formatItemsForDay($day, $items);
         $sut->updateQuality();
     }
     $receivedExpected = $this->compareToApproved($received);
     if (!$receivedExpected) {
         $this->writeReceivedFile($received);
     }
     $this->assertTrue($receivedExpected, "Did not match approved results. Compare files '" . self::GILDED_ROSE_APPROVED_FILE . "' and '" . self::GILDED_ROSE_RECEIVED_FILE . "'");
 }
 /**
  * @param $item
  */
 private function updateQualityForItem($item)
 {
     $rose = new GildedRose(array($item));
     $rose->updateQuality();
 }
<?php

require_once 'GildedRose.php';
echo "OMGHAI!\n";
$items = array(new Item('+5 Dexterity Vest', 10, 20), new Item('Aged Brie', 2, 0), new Item('Elixir of the Mongoose', 5, 7), new Item('Sulfuras, Hand of Ragnaros', 0, 80), new Item('Sulfuras, Hand of Ragnaros', -1, 80), new Item('Backstage passes to a TAFKAL80ETC concert', 15, 20), new Item('Backstage passes to a TAFKAL80ETC concert', 10, 49), new Item('Backstage passes to a TAFKAL80ETC concert', 5, 49), new Item('Conjured Mana Cake', 3, 6));
$app = new GildedRose($items);
$days = 2;
if (count($argv) > 1) {
    $days = (int) $argv[1];
}
for ($i = 0; $i < $days; $i++) {
    echo "-------- day {$i} --------\n";
    echo "name, sellIn, quality\n";
    foreach ($items as $item) {
        echo $item . PHP_EOL;
    }
    echo PHP_EOL;
    $app->updateQuality();
}