use Org\Mxchange\CoreFramework\Filesystem\CloseableFile;
use Org\Mxchange\CoreFramework\Filesystem\FilePointer;
use Org\Mxchange\CoreFramework\Generic\FrameworkInterface;
+use Org\Mxchange\CoreFramework\Generic\NullPointerException;
use Org\Mxchange\CoreFramework\Generic\UnsupportedOperationException;
use Org\Mxchange\CoreFramework\Object\BaseFrameworkSystem;
* @return void
*/
public final function __destruct() {
- // Try to close a file
+ // Debug message
/* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('BASE-ABSTRACT-FILE: DESTRUCTED!');
- $this->closeFile();
+
+ // Is file object set?
+ if ($this->isFileObjectSet()) {
+ // Try to close a file
+ $this->closeFile();
+ }
// Call the parent destructor
parent::__destruct();
* @return void
*/
public function closeFile (): void {
- // Close down pointer instance as well by unsetting it
+ // Check condition
/* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('BASE-ABSTRACT-FILE: CALLED!');
+ if (!$this->isFileObjectSet()) {
+ // Throw NPE
+ throw new NullPointerException($this, FrameworkInterface::EXCEPTION_IS_NULL_POINTER);
+ }
+
+ // Close inner file object first
+ $this->getPointerInstance()->closeFile();
+
+ // Close down pointer instance as well by unsetting it
$this->unsetPointerInstance();
// Trace message
*
* @return void
* @throws NullPointerException If the file pointer instance is not set by setFileObject()
- * @throws LogicException If there is no object being set
*/
public function closeFile (): void {
// Validate parameter
- /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('BASE-FILE-IO: fileName=%s - CALLED!', $this->getFileObject()->getPathname()));
- if (is_null($this->getFileObject())) {
+ /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('BASE-FILE-IO: this->isFileObjectSet()=%d - CALLED!', $this->isFileObjectSet()));
+ if (!$this->isFileObjectSet()) {
// Pointer not initialized
throw new NullPointerException($this, FrameworkInterface::EXCEPTION_IS_NULL_POINTER);
- } elseif (!is_object($this->getFileObject())) {
- // Pointer is not a valid resource!
- throw new LogicException(sprintf('this->fileObject[]=%s is no object', gettype($this->getFileObject())), FrameworkInterface::EXCEPTION_LOGIC_EXCEPTION);
}
// Close the file pointer by NULL-ing it
* @return void
*/
protected final function resetFileObject (): void {
+ // Validate parameter
+ /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage(sprintf('BASE-FILE-IO: this->isFileObjectSet()=%d - CALLED!', $this->isFileObjectSet()));
+ if (!$this->isFileObjectSet()) {
+ // Pointer not initialized
+ throw new NullPointerException($this, FrameworkInterface::EXCEPTION_IS_NULL_POINTER);
+ }
+
// Set it to NULL
- /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('BASE-FILE-IO: Setting this->fileObject=NULL - CALLED!');
+ /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('BASE-FILE-IO: Setting this->fileObject=NULL ...');
$this->fileObject = NULL;
// Trace message