X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=framework%2Fmain%2Fclasses%2Ffile_directories%2Foutput%2Ftext%2Fclass_FrameworkTextFileOutputPointer.php;h=dde389fb12871b1550a828dc2a492fc169f0ff70;hp=a235a8069aec35171aaa6f234dcecb755cd9f360;hb=63f5632b0c5d2cebf8dd0940fdab561f86470f80;hpb=c43b569f2b140f40ece9f6e5b9a3825cb76b6413 diff --git a/framework/main/classes/file_directories/output/text/class_FrameworkTextFileOutputPointer.php b/framework/main/classes/file_directories/output/text/class_FrameworkTextFileOutputPointer.php index a235a806..dde389fb 100644 --- a/framework/main/classes/file_directories/output/text/class_FrameworkTextFileOutputPointer.php +++ b/framework/main/classes/file_directories/output/text/class_FrameworkTextFileOutputPointer.php @@ -8,6 +8,10 @@ use CoreFramework\Filesystem\Pointer\OutputPointer; use CoreFramework\Generic\NullPointerException; use CoreFramework\Generic\UnsupportedOperationException; +// Import SPL stuff +use \InvalidArgumentException; +use \SplFileInfo; + /** * A class for writing files * @@ -45,32 +49,33 @@ class FrameworkTextFileOutputPointer extends BaseFileIo implements OutputPointer * 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() + * @param $fileInstance An instance of a SplFileInfo class * @param $mode The output mode ('w', 'a' are valid) - * @throws FileIsEmptyException If the provided file name is empty. + * @throws InvalidArgumentException If mode is empty * @throws FileIoException If fopen() returns not a file resource * @return void */ - public static final function createFrameworkTextFileOutputPointer ($fileName, $mode) { + public static final function createFrameworkTextFileOutputPointer (SplFileInfo $fileInstance, $mode) { // Some pre-sanity checks... - if (is_null($fileName)) { + if (empty($mode)) { // No filename given - throw new FileIsEmptyException(NULL, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + throw new InvalidArgumentException('Parameter "mode" is empty'); } // END - if // Try to open a handler - $filePointer = @fopen($fileName, $mode); - if ((is_null($filePointer)) || ($filePointer === false)) { + $fileObject = $fileInstance->openFile($mode); + + // Is it valid? + if ((is_null($fileObject)) || ($fileObject === false)) { // Something bad happend - throw new FileIoException ($fileName, self::EXCEPTION_FILE_POINTER_INVALID); + throw new FileIoException($fileInstance, self::EXCEPTION_FILE_POINTER_INVALID); } // END - if // Create new instance $pointerInstance = new FrameworkTextFileOutputPointer(); - // Set file pointer and file name - $pointerInstance->setPointer($filePointer); - $pointerInstance->setFileName($fileName); + // Set file object + $pointerInstance->setFileObject($fileObject); // Return the instance return $pointerInstance; @@ -81,22 +86,20 @@ class FrameworkTextFileOutputPointer extends BaseFileIo implements OutputPointer * * @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 + * @throws NullPointerException If the file pointer instance is not set by setPointer() + * @throws LogicException If there is no object being set */ public function writeToFile ($dataStream) { - 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())) { - // Pointer is not a valid resource! - throw new InvalidResourceException($this, self::EXCEPTION_INVALID_RESOURCE); + } elseif (!is_object($this->getFileObject())) { + // Pointer is not a valid object! + throw new LogicException(sprintf('this->fileObject[]=%s is no object', gettype($this->getFileObject()))); } // Write data to the file pointer and return written bytes - return fwrite($this->getPointer(), $dataStream); + return $this->getFileObject()->fwrite($dataStream); } /**