From 88edbab806256235ce080fc18d6602061777a6ba Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Sun, 7 Dec 2014 19:52:23 +0100 Subject: [PATCH] Continued: - FrameworkDirectoryPointer now has an own interface 'Directory'. - Added setter/getter for directoryInstance variable MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- inc/classes/interfaces/io/directory/.htaccess | 1 + .../io/directory/class_Directory.php | 64 +++++++++++++++++++ .../main/class_BaseFrameworkSystem.php | 24 +++++++ .../class_FrameworkDirectoryPointer.php | 38 +++++------ 4 files changed, 108 insertions(+), 19 deletions(-) create mode 100644 inc/classes/interfaces/io/directory/.htaccess create mode 100644 inc/classes/interfaces/io/directory/class_Directory.php diff --git a/inc/classes/interfaces/io/directory/.htaccess b/inc/classes/interfaces/io/directory/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/interfaces/io/directory/.htaccess @@ -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 index 00000000..89e425ed --- /dev/null +++ b/inc/classes/interfaces/io/directory/class_Directory.php @@ -0,0 +1,64 @@ + + * @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 . + */ +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] +?> diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php index 96d5cabb..ae19aeb4 100644 --- a/inc/classes/main/class_BaseFrameworkSystem.php +++ b/inc/classes/main/class_BaseFrameworkSystem.php @@ -198,6 +198,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { */ private $minableInstance = NULL; + /** + * A Directory instance + */ + private $directoryInstance = NULL; + /** * Thousands separator */ @@ -1319,6 +1324,25 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { return $this->minableInstance; } + /** + * 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 diff --git a/inc/classes/main/file_directories/directory/class_FrameworkDirectoryPointer.php b/inc/classes/main/file_directories/directory/class_FrameworkDirectoryPointer.php index b23ee13a..d2f47d3c 100644 --- a/inc/classes/main/file_directories/directory/class_FrameworkDirectoryPointer.php +++ b/inc/classes/main/file_directories/directory/class_FrameworkDirectoryPointer.php @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -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; } -- 2.39.2