From 29af067cf2d10df397e00fa3c77e1edd376c0304 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Wed, 14 May 2014 21:29:38 +0200 Subject: [PATCH] Reverted some last changes + added FrameworkFileInputOutputPointer which allows reading and writing. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- .../input/class_FrameworkFileInputPointer.php | 14 +- inc/classes/main/io/io/.htaccess | 1 + .../class_FrameworkFileInputOutputPointer.php | 123 ++++++++++++++++++ 3 files changed, 133 insertions(+), 5 deletions(-) create mode 100644 inc/classes/main/io/io/.htaccess create mode 100644 inc/classes/main/io/io/class_FrameworkFileInputOutputPointer.php diff --git a/inc/classes/main/io/input/class_FrameworkFileInputPointer.php b/inc/classes/main/io/input/class_FrameworkFileInputPointer.php index b6b9cb3a..f70ef5a1 100644 --- a/inc/classes/main/io/input/class_FrameworkFileInputPointer.php +++ b/inc/classes/main/io/input/class_FrameworkFileInputPointer.php @@ -55,8 +55,8 @@ class FrameworkFileInputPointer extends BaseFileIo { } // Try to open a handler - $fileInstance = fopen($fileName, 'rb'); - if ((is_null($fileInstance)) || ($fileInstance === FALSE)) { + $filePointer = fopen($fileName, 'rb'); + if ((is_null($filePointer)) || ($filePointer === FALSE)) { // Something bad happend throw new FileIoException($fileName, self::EXCEPTION_FILE_POINTER_INVALID); } // END - if @@ -65,7 +65,7 @@ class FrameworkFileInputPointer extends BaseFileIo { $pointerInstance = new FrameworkFileInputPointer(); // Set file pointer and file name - $pointerInstance->setInstance($fileInstance); + $pointerInstance->setPointer($filePointer); $pointerInstance->setFileName($fileName); // Return the instance @@ -78,15 +78,19 @@ class FrameworkFileInputPointer extends BaseFileIo { * @return mixed The result of fread() * @throws NullPointerException If the file pointer instance * is not set by setPointer() + * @throws InvalidResourceException If there is being set */ public function readFromFile () { - if (!$this->getInstance() instanceof SplFileObject) { + if (is_null($this->getPointer())) { // Pointer not initialized throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); + } elseif (!is_resource($this->getPointer())) { + // Pointer is not a valid resource! + throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); } // Read data from the file pointer and return it - return fread($this->getInstance(), 1024); + return fread($this->getPointer(), 1024); } } diff --git a/inc/classes/main/io/io/.htaccess b/inc/classes/main/io/io/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/main/io/io/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/io/io/class_FrameworkFileInputOutputPointer.php b/inc/classes/main/io/io/class_FrameworkFileInputOutputPointer.php new file mode 100644 index 00000000..824df452 --- /dev/null +++ b/inc/classes/main/io/io/class_FrameworkFileInputOutputPointer.php @@ -0,0 +1,123 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2013 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class FrameworkFileInputOutputPointer extends BaseFileIo { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Create a file pointer based on the given file. The file will also + * be verified here. + * + * @param $fileName The file name we shall pass to fopen() + * @return void + * @throws FileIsEmptyException If the given file name is NULL or empty + * @throws FileReadProtectedException If PHP cannot read an existing file + * @throws FileWriteProtectedException If PHP cannot write an existing file + * @throws FileIoException If fopen() returns not a file resource + */ + public static final function createFrameworkFileInputOutputPointer ($fileName) { + // Some pre-sanity checks... + if ((is_null($fileName)) || (empty($fileName))) { + // No filename given + throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } elseif ((file_exists($fileName)) && (!is_readable($fileName))) { + // File exists but cannot be read + throw new FileReadProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ); + } elseif ((file_exists($fileName)) && (!is_writable($fileName))) { + // File exists but cannot be written + throw new FileWriteProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ); + } + + // Try to open a handler + $filePointer = fopen($fileName, 'r+b'); + if ((is_null($filePointer)) || ($filePointer === FALSE)) { + // Something bad happend + throw new FileIoException($fileName, self::EXCEPTION_FILE_POINTER_INVALID); + } // END - if + + // Create new instance + $pointerInstance = new FrameworkFileInputOutputPointer(); + + // Set file pointer and file name + $pointerInstance->setPointer($filePointer); + $pointerInstance->setFileName($fileName); + + // Return the instance + return $pointerInstance; + } + + /** + * Read data a file pointer + * + * @return mixed The result of fread() + * @throws NullPointerException If the file pointer instance + * is not set by setPointer() + * @throws InvalidResourceException If there is being set + */ + public function readFromFile () { + if (is_null($this->getPointer())) { + // Pointer not initialized + throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); + } elseif (!is_resource($this->getPointer())) { + // Pointer is not a valid resource! + throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); + } + + // Read data from the file pointer and return it + return fread($this->getPointer(), 1024); + } + + /** + * Write data to a file pointer + * + * @param $dataStream The data stream we shall write to the file + * @return mixed Number of writes bytes or FALSE on error + * @throws NullPointerException If the file pointer instance + * is not set by setPointer() + * @throws InvalidResourceException If there is being set + * an invalid file resource + */ + public function writeToFile ($dataStream) { + if (is_null($this->getPointer())) { + // Pointer not initialized + throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); + } elseif (!is_resource($this->getPointer())) { + // Pointer is not a valid resource! + throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); + } + + // Write data to the file pointer and return written bytes + return fwrite($this->getPointer(), $dataStream); + } +} + +// [EOF] +?> -- 2.30.2