X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=framework%2Fmain%2Fclasses%2Ffile_directories%2Finput%2Fraw%2Fclass_FrameworkRawFileInputPointer.php;h=c76d4fb9deeaac14965cadf94a7319e3ba421ac3;hb=d831713579377eaedd277b577dcd9c73040d0767;hp=09781562c632f431b00caf77f159826ae3d471e9;hpb=78a010fef84895720e796842208f01dfb619c332;p=core.git diff --git a/framework/main/classes/file_directories/input/raw/class_FrameworkRawFileInputPointer.php b/framework/main/classes/file_directories/input/raw/class_FrameworkRawFileInputPointer.php index 09781562..c76d4fb9 100644 --- a/framework/main/classes/file_directories/input/raw/class_FrameworkRawFileInputPointer.php +++ b/framework/main/classes/file_directories/input/raw/class_FrameworkRawFileInputPointer.php @@ -1,17 +1,28 @@ * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2021 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.shipsimu.org * @@ -34,7 +45,7 @@ class FrameworkRawFileInputPointer extends BaseFileIo implements InputPointer { * * @return void */ - protected function __construct () { + private function __construct () { // Call parent constructor parent::__construct(__CLASS__); } @@ -43,44 +54,44 @@ class FrameworkRawFileInputPointer extends BaseFileIo implements InputPointer { * 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() - * @throws FileIsEmptyException If the provided file name is empty. + * @param $fileInstance An instance of a SplFileInfo class * @throws FileIoException If the file is not reachable * @throws FileReadProtectedException If the file is not found or cannot be read * @throws FileNotFoundException If the file does not exist * @return void */ - public static final function createFrameworkRawFileInputPointer ($fileName) { + public static final function createFrameworkRawFileInputPointer (SplFileInfo $fileInstance) { // Some pre-sanity checks... - if ((is_null($fileName)) || (empty($fileName))) { - // No filename given - throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!BaseFrameworkSystem::isReachableFilePath($fileName)) { + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('RAW-FILE-INPUT-POINTER: fileInstance[%s]=%s - CALLED!', get_class($fileInstance), $fileInstance->__toString())); + if (!FrameworkBootstrap::isReachableFilePath($fileInstance)) { // File cannot be accessed (due to open_basedir restriction) - throw new FileIoException($fileName, self::EXCEPTION_FILE_NOT_REACHABLE); - } elseif ((!BaseFrameworkSystem::isReadableFile($fileName)) && (file_exists($fileName))) { - // File exists but cannot be read from - throw new FileReadProtectedException($fileName, self::EXCEPTION_FILE_CANNOT_BE_READ); - } elseif ((!BaseFrameworkSystem::isReadableFile($fileName)) && (!file_exists($fileName))) { + throw new FileIoException($fileInstance, self::EXCEPTION_FILE_NOT_REACHABLE); + } elseif ((!FrameworkBootstrap::isReadableFile($fileInstance)) && (!$fileInstance->isFile())) { // File does not exist - throw new FileNotFoundException($fileName, self::EXCEPTION_FILE_NOT_FOUND); + throw new FileNotFoundException($fileInstance, self::EXCEPTION_FILE_NOT_FOUND); + } elseif ((!FrameworkBootstrap::isReadableFile($fileInstance)) && ($fileInstance->isFile())) { + // File exists but cannot be read from + throw new FileReadProtectedException($fileInstance, self::EXCEPTION_FILE_CANNOT_BE_READ); } // Try to open a handler - $filePointer = fopen($fileName, 'rb'); - if ((is_null($filePointer)) || ($filePointer === FALSE)) { + $fileObject = $fileInstance->openFile('rb'); + + // Is it valid? + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('RAW-FILE-INPUT-POINTER: fileObject[]=%s', gettype($fileObject))); + if (!($fileObject instanceof SplFileObject)) { // Something bad happend - throw new FileIoException($fileName, self::EXCEPTION_FILE_POINTER_INVALID); - } // END - if + throw new FileIoException($fileInstance, self::EXCEPTION_FILE_POINTER_INVALID); + } // Create new instance $pointerInstance = new FrameworkRawFileInputPointer(); // Set file pointer and file name - $pointerInstance->setPointer($filePointer); - $pointerInstance->setFileName($fileName); + $pointerInstance->setFileObject($fileObject); // Return the instance + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('RAW-FILE-INPUT-POINTER: pointerInstance=%s - EXIT!', $pointerInstance->__toString())); return $pointerInstance; } @@ -88,17 +99,16 @@ class FrameworkRawFileInputPointer extends BaseFileIo implements InputPointer { * 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 + * @throws NullPointerException If the file pointer instance is not set by setFileObject() + * @throws LogicException If there is no object being set */ public function readFromFile () { - 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()))); } // Read data from the file pointer and return it @@ -122,12 +132,9 @@ class FrameworkRawFileInputPointer extends BaseFileIo implements InputPointer { * @param $bytes Amount of bytes to read * @return $data Data read from file */ - public function read ($bytes = NULL) { - // $bytes shall be integer - assert(is_int($bytes)); - + public function read (int $bytes = 0) { // Try to read given characters - $data = fread($this->getPointer(), $bytes); + $data = $this->getFileObject()->fread($bytes); // Then return it return $data; @@ -141,7 +148,7 @@ class FrameworkRawFileInputPointer extends BaseFileIo implements InputPointer { * @return void * @throws UnsupportedOperationException If this method is called */ - public function analyzeFile () { + public function analyzeFileStructure () { throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION); } @@ -157,7 +164,7 @@ class FrameworkRawFileInputPointer extends BaseFileIo implements InputPointer { /** * Checks wether the current entry is valid (not at the end of the file). - * This method will return TRUE if an emptied (nulled) entry has been found. + * This method will return true if an emptied (nulled) entry has been found. * * @return $isValid Whether the next entry is valid * @throws UnsupportedOperationException If this method is called