00001 <?php 00002 /*************************************************************************** 00003 * Copyright (C) 2007 by Anton E. Lebedevich * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU Lesser General Public License as * 00007 * published by the Free Software Foundation; either version 3 of the * 00008 * License, or (at your option) any later version. * 00009 * * 00010 ***************************************************************************/ 00011 00015 final class FileRandomSource implements RandomSource 00016 { 00017 private $handle = null; 00018 00019 public function __construct($filename) 00020 { 00021 Assert::isTrue(file_exists($filename) && is_readable($filename)); 00022 00023 $this->handle = fopen($filename, 'rb'); 00024 } 00025 00026 public function __destruct() 00027 { 00028 fclose($this->handle); 00029 } 00030 00031 public function getBytes($numberOfBytes) 00032 { 00033 Assert::isPositiveInteger($numberOfBytes); 00034 00035 return fread($this->handle, $numberOfBytes); 00036 } 00037 } 00038 ?>