* [ * [ * 'code' => (int)商品コード, * 'quantity' => (int)在庫数, * ],...(以後繰り返し) * ] * * * @return array 在庫状況が格納された配列 * @throws \SKJ\AppException\Logic\EnvironmentException 在庫管理ファイルが開けない * @throws \SKJ\AppException\Runtime\EmptyResultException 在庫が未登録 * @throws \SKJ\AppException\Logic\UnexpectedValueException 異常終了 */ public function readStock() { if (($fp = @fopen('stock.csv', 'r')) === false) { throw new \SKJ\AppException\Logic\EnvironmentException( '在庫管理ファイルが見つかりません!!' ); } $stock = []; while (($line = fgetcsv($fp)) !== false) { $stock[] = [ 'code' => (int)$line[0], 'quantity' => (int)$line[1], ]; } if (empty($stock)) { throw new \SKJ\AppException\Runtime\EmptyResultException( '在庫がありません!!' ); } if (fclose($fp) === false) { throw new \SKJ\AppException\Logic\UnexpectedValueException( '異常終了しました!!' ); } return $stock; } } $shop = new Shop(); try { foreach ($shop->readStock() as $item) { printf('商品コードが%dの在庫数は%d個です'.PHP_EOL, $item['code'], $item['quantity']); } } catch (\SKJ\AppException\Logic\EnvironmentException $e) { die('在庫管理ファイルに問題があります'.PHP_EOL); } catch (\SKJ\AppException\Runtime\EmptyResultException $e) { die('在庫が存在しません'.PHP_EOL); } catch (\SKJ\AppException\Logic\UnexpectedValueException $e) { die('異常終了です'.PHP_EOL); }