<?php
require_once 'OrderDaoInterface.php';
require_once 'Order.php';
class DbOrderDao implements OrderDaoInterface
{
private $_orders;
public function __construct(ItemDaoInterface $itemDao)
{
$fp = fopen('order_data.csv', 'r');
if (!$fp) {
throw new RuntimeException('File [order_data.csv] is not readable.');
}
$dummy = fgets($fp, 1024);
$this->_orders = array();
while ($buffer = fgets($fp, 1024)) {
list($orderId, $itemIds) = explode(',', rtrim($buffer));
$order = new Order($orderId);
foreach (explode('|', $itemIds) as $itemId) {
$item = $itemDao->findById($itemId);
if (!is_null($item)) {
$order->addItem($item);
}
}
$this->_orders[$orderId] = $order;
}
fclose($fp);
}
public function findById($orderId)
{
if (array_key_exists($orderId, $this->_orders)) {
return $this->_orders[$orderId];
} else {
return null;
}
}
}