<?php
require_once 'OrderItem.php';
class ItemDao
{
private static $_instance;
private $_items;
private function __construct()
{
$fp = fopen('item_data.csv', 'r');
if (!$fp) {
throw new RuntimeException('File [item_data.csv] is not readable.');
}
$dummy = fgets($fp, 1024);
$this->_items = array();
while ($buffer = fgets($fp, 1024)) {
list($itemId, $itemName, $itemPrice) = explode(',', rtrim($buffer));
$this->_items[$itemId] = new Item($itemId, $itemName, $itemPrice);
}
fclose($fp);
}
public static function getInstance()
{
if (!isset(self::$_instance)) {
self::$_instance = new ItemDao();
}
return self::$_instance;
}
public function findById($itemId)
{
if (array_key_exists($itemId, $this->_items)) {
return $this->_items[$itemId];
} else {
return null;
}
}
public function setAside(OrderItem $orderItem)
{
echo $orderItem->getItem()->getName() . 'の在庫引当を行いました。<br />';
}
public final function __clone()
{
throw new LogicException('Clone is not allowed against [' . get_class($this) . '].');
}
}