Continued:
authorRoland Haeder <roland@mxchange.org>
Sun, 7 Dec 2014 18:52:23 +0000 (19:52 +0100)
committerRoland Haeder <roland@mxchange.org>
Sun, 7 Dec 2014 18:52:23 +0000 (19:52 +0100)
- FrameworkDirectoryPointer now has an own interface 'Directory'.
- Added setter/getter for directoryInstance variable

Signed-off-by: Roland H├Ąder <roland@mxchange.org>
inc/classes/interfaces/io/directory/.htaccess [new file with mode: 0644]
inc/classes/interfaces/io/directory/class_Directory.php [new file with mode: 0644]
inc/classes/main/class_BaseFrameworkSystem.php
inc/classes/main/file_directories/directory/class_FrameworkDirectoryPointer.php

diff --git a/inc/classes/interfaces/io/directory/.htaccess b/inc/classes/interfaces/io/directory/.htaccess
new file mode 100644 (file)
index 0000000..3a42882
--- /dev/null
@@ -0,0 +1 @@
+Deny from all
diff --git a/inc/classes/interfaces/io/directory/class_Directory.php b/inc/classes/interfaces/io/directory/class_Directory.php
new file mode 100644 (file)
index 0000000..89e425e
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+/**
+ * An interface for directorties
+ *
+ * @author             Roland Haeder <webmaster@shipsimu.org>
+ * @version            0.0.0
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 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 <http://www.gnu.org/licenses/>.
+ */
+interface Directory extends FrameworkInterface {
+       /**
+        * Read raw lines of data from a directory pointer and return the data
+        *
+        * @return      $currentEntry   Current entry from encapsulated iterator
+        */
+       function readRawDirectory ();
+
+       /**
+        * Read lines from the current directory pointer except some parts
+        *
+        * @param       $except         Some parts of a directory we want to ignore. Valid: directory and file names, other values will be silently ignored
+        * @return      string          Directory and/or file names read from the current directory pointer
+        */
+       function readDirectoryExcept (array $except = array());
+
+       /**
+        * Close a directory source and set it's instance to null and the path name
+        * to empty
+        *
+        * @return      void
+        */
+       function closeDirectory ();
+
+       /**
+        * Getter for the directory pointer
+        *
+        * @return      $iteratorInstance       The directory pointer which shall be a valid directory resource
+        */
+       function getIteratorInstance ();
+
+       /**
+        * Getter for path name
+        *
+        * @return      $pathName       The current path name
+        */
+       function getPathName ();
+}
+
+// [EOF]
+?>
index 96d5cab..ae19aeb 100644 (file)
@@ -199,6 +199,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        private $minableInstance = NULL;
 
        /**
+        * A Directory instance
+        */
+       private $directoryInstance = NULL;
+
+       /**
         * Thousands separator
         */
        private $thousands = '.'; // German
@@ -1320,6 +1325,25 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        }
 
        /**
+        * Setter for Directory instance
+        *
+        * @param       $directoryInstance      A FrameworkDirectoryPointer instance
+        * @return      void
+        */
+       protected final function setDirectoryInstance (Directory $directoryInstance) {
+               $this->directoryInstance = $directoryInstance;
+       }
+
+       /**
+        * Getter for directory instance
+        *
+        * @return      $directoryInstance      A Directory instance
+        */
+       protected final function getDirectoryInstance () {
+               return $this->directoryInstance;
+       }
+
+       /**
         * Checks whether an object equals this object. You should overwrite this
         * method to implement own equality checks
         *
index b23ee13..d2f47d3 100644 (file)
@@ -21,7 +21,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-class FrameworkDirectoryPointer extends BaseFrameworkSystem {
+class FrameworkDirectoryPointer extends BaseFrameworkSystem implements Directory {
        /**
         * The current path we are working in
         */
@@ -30,7 +30,7 @@ class FrameworkDirectoryPointer extends BaseFrameworkSystem {
        /**
         * The directory iterator instance
         */
-       private $directoryInstance = NULL;
+       private $iteratorInstance = NULL;
 
        /**
         * Protected constructor
@@ -45,7 +45,7 @@ class FrameworkDirectoryPointer extends BaseFrameworkSystem {
         */
        public function __destruct() {
                // Is there a resource pointer? Then we have to close the directory here!
-               if ($this->getDirectoryInstance() instanceof DirectoryIterator) {
+               if ($this->getIteratorInstance() instanceof DirectoryIterator) {
                        // Try to close a directory
                        $this->closeDirectory();
                } // END - if
@@ -103,13 +103,13 @@ class FrameworkDirectoryPointer extends BaseFrameworkSystem {
                $pointerInstance = new FrameworkDirectoryPointer();
 
                // Get an iterator for the directory
-               $directoryInstance = new DirectoryIterator($pathName);
+               $iteratorInstance = new DirectoryIterator($pathName);
 
                // ... and rewind back
-               $directoryInstance->rewind();
+               $iteratorInstance->rewind();
 
                // Set directory pointer and path name
-               $pointerInstance->setDirectoryInstance($directoryInstance);
+               $pointerInstance->setIteratorInstance($iteratorInstance);
                $pointerInstance->setPathName($pathName);
 
                // Return the instance
@@ -126,13 +126,13 @@ class FrameworkDirectoryPointer extends BaseFrameworkSystem {
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DIRECTORY[' . __METHOD__ . ':' . __LINE__ . '] - CALLED!');
 
                // Can the next entry be read?
-               assert($this->getDirectoryInstance()->valid());
+               assert($this->getIteratorInstance()->valid());
 
                // Default is FALSE
                $currentEntry = FALSE;
 
                // Read data from the directory pointer and return it
-               $currentEntry = $this->getDirectoryInstance()->current();
+               $currentEntry = $this->getIteratorInstance()->current();
 
                // Return found entry
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DIRECTORY[' . __METHOD__ . ':' . __LINE__ . ']: currentEntry[]=' . gettype($currentEntry) . ' - EXIT!');
@@ -151,7 +151,7 @@ class FrameworkDirectoryPointer extends BaseFrameworkSystem {
                        // No exception given, so read all files and directories, but not recursive
                        self::createDebugInstance(__CLASS__)->debugOutput('DIRECTORY[' . __METHOD__ . ':' . __LINE__ . ']: No exceptions given, please use readRawDirectory() instead!');
                        return $this->readRawDirectory();
-               } elseif (!$this->getDirectoryInstance()->valid()) {
+               } elseif (!$this->getIteratorInstance()->valid()) {
                        // No more left to read
                        return NULL;
                }
@@ -172,7 +172,7 @@ class FrameworkDirectoryPointer extends BaseFrameworkSystem {
                        // Is it not excluded?
                        if (in_array($rawLine, $except)) {
                                // To next entry
-                               $this->getDirectoryInstance()->next();
+                               $this->getIteratorInstance()->next();
 
                                // Exclude this part
                                $rawLine = $this->readDirectoryExcept($except);
@@ -181,7 +181,7 @@ class FrameworkDirectoryPointer extends BaseFrameworkSystem {
                } // END - if
 
                // To next entry
-               $this->getDirectoryInstance()->next();
+               $this->getIteratorInstance()->next();
 
                // Return read line
                //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('DIRECTORY[' . __METHOD__ . ':' . __LINE__ . ']: rawLine[' . gettype($rawLine) . ']=' . $rawLine);
@@ -196,28 +196,28 @@ class FrameworkDirectoryPointer extends BaseFrameworkSystem {
         */
        public function closeDirectory () {
                // Close the directory by unsetting it
-               $this->setDirectoryInstance(NULL);
+               $this->setIteratorInstance(NULL);
                $this->setPathName('');
        }
 
        /**
         * Setter for the directory pointer
         *
-        * @param       $directoryInstance      An instanceof a DirectoryIterator class or NULL to unset ("close") it.
+        * @param       $iteratorInstance       An instanceof a DirectoryIterator class or NULL to unset ("close") it.
         * @return      void
         */
-       protected final function setDirectoryInstance (DirectoryIterator $directoryInstance = NULL) {
+       protected final function setIteratorInstance (DirectoryIterator $iteratorInstance = NULL) {
                // Set instance (or NULL)
-               $this->directoryInstance = $directoryInstance;
+               $this->iteratorInstance = $iteratorInstance;
        }
 
        /**
         * Getter for the directory pointer
         *
-        * @return      $directoryInstance      The directory pointer which shall be a valid directory resource
+        * @return      $iteratorInstance       The directory pointer which shall be a valid directory resource
         */
-       public final function getDirectoryInstance () {
-               return $this->directoryInstance;
+       public final function getIteratorInstance () {
+               return $this->iteratorInstance;
        }
 
        /**
@@ -226,7 +226,7 @@ class FrameworkDirectoryPointer extends BaseFrameworkSystem {
         * @param       $pathName       The new path name
         * @return      void
         */
-       public final function setPathName ($pathName) {
+       protected final function setPathName ($pathName) {
                $pathName = (string) $pathName;
                $this->pathName = $pathName;
        }