X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=framework%2Fmain%2Fclasses%2Ffile_directories%2Finput%2Ftext%2Fclass_FrameworkTextFileInputPointer.php;h=20e127f26edeaab359200f616a0c11e26e0e817a;hb=6e64aa2cb0fbd5a3c712a6a15e08399b1120cc67;hp=f22cdec57e0b30641924f6d504863fb8b501c71c;hpb=c43b569f2b140f40ece9f6e5b9a3825cb76b6413;p=core.git diff --git a/framework/main/classes/file_directories/input/text/class_FrameworkTextFileInputPointer.php b/framework/main/classes/file_directories/input/text/class_FrameworkTextFileInputPointer.php index f22cdec5..20e127f2 100644 --- a/framework/main/classes/file_directories/input/text/class_FrameworkTextFileInputPointer.php +++ b/framework/main/classes/file_directories/input/text/class_FrameworkTextFileInputPointer.php @@ -1,22 +1,26 @@ * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2020 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.shipsimu.org * @@ -49,40 +53,40 @@ class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { * be verified here. * * @param $fileName The file name we shall pass to fopen() - * @throws FileIsEmptyException If the provided file name is empty. * @throws FileIoException If the file is not reachable * @throws FileReadProtectedException If the file cannot be read from * @return void */ - public static final function createFrameworkTextFileInputPointer ($fileName) { - // Some pre-sanity checks... - if ((is_null($fileName)) || (empty($fileName))) { - // No filename given - throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!FrameworkBootstrap::isReachableFilePath($fileName)) { + public static final function createFrameworkTextFileInputPointer (SplFileInfo $infoInstance) { + // Check parameter + if (!FrameworkBootstrap::isReachableFilePath($infoInstance)) { // File cannot be reached - throw new FileIoException($fileName, self::EXCEPTION_FILE_NOT_REACHABLE); - } elseif ((!FrameworkBootstrap::isReadableFile($fileName)) && (!file_exists($fileName))) { + throw new FileIoException($infoInstance, self::EXCEPTION_FILE_NOT_REACHABLE); + } elseif ((!FrameworkBootstrap::isReadableFile($infoInstance)) && (!$infoInstance->isFile())) { // File does not exist! - throw new FileNotFoundException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ); - } elseif ((!FrameworkBootstrap::isReadableFile($fileName)) && (file_exists($fileName))) { + throw new FileNotFoundException($infoInstance, self::EXCEPTION_FILE_CANNOT_BE_READ); + } elseif ((!FrameworkBootstrap::isReadableFile($infoInstance)) && ($infoInstance->isFile())) { // File cannot be read from (but exists) - throw new FileReadProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ); + throw new FileReadProtectedException($infoInstance, self::EXCEPTION_FILE_CANNOT_BE_READ); } // Try to open a handler - $filePointer = fopen($fileName, 'r'); - if ((is_null($filePointer)) || ($filePointer === false)) { + $fileObject = $infoInstance->openFile('r'); + + // Debug message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('TEXT-FILE-INPUT: fileObject[]=' . gettype($fileObject)); + + // Is it valid? + if ((is_null($fileObject)) || ($fileObject === false)) { // Something bad happend - throw new FileIoException($fileName, self::EXCEPTION_FILE_POINTER_INVALID); + throw new FileIoException($infoInstance, self::EXCEPTION_FILE_POINTER_INVALID); } // END - if // Create new instance $pointerInstance = new FrameworkTextFileInputPointer(); // Set file pointer and file name - $pointerInstance->setPointer($filePointer); - $pointerInstance->setFileName($fileName); + $pointerInstance->setFileObject($fileObject); // Return the instance return $pointerInstance; @@ -113,27 +117,26 @@ class FrameworkTextFileInputPointer extends BaseFileIo implements InputPointer { * * @param $bytes Amount of bytes to read or whole line (only text files) * @return $data Data read from file - * @throws NullPointerException If the file pointer instance - * is not set by setPointer() - * @throws InvalidResourceException If there is being set + * @throws NullPointerException If the file pointer instance is not set by setFileObject() + * @throws InvalidResourceException If there is no object being set */ - public function read ($bytes = NULL) { + public function read (int $bytes = 0) { // Some sanity checks - if (is_null($this->getPointer())) { + if (is_null($this->getFileObject())) { // Pointer not initialized throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); - } elseif (!is_resource($this->getPointer())) { + } elseif (!is_object($this->getFileObject())) { // Pointer is not a valid resource! - throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); + throw new LogicException(sprintf('this->fileObject[]=%s is no object', gettype($this->getFileObject()))); } // Is $bytes set? - if (is_int($bytes)) { + if ($bytes > 0) { // Try to read given characters - $data = fgets($this->getPointer(), $bytes); + $data = $this->getFileObject()->fread($bytes); } else { // Try to read whole line - $data = fgets($this->getPointer()); + $data = $this->getFileObject()->fgets(); } // Then return it