From 8da8c73c7c0e93f643408dfd28a7793f87b8cc97 Mon Sep 17 00:00:00 2001
From: Roland Haeder <roland@mxchange.org>
Date: Sat, 1 Aug 2015 14:27:03 +0200
Subject: [PATCH] Using the bebug middleware class will become deprecated (now
 already marked to warn you) when the new logger facilities are coming out.
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Signed-off-by: Roland Häder <roland@mxchange.org>
---
 .../main/class_BaseFrameworkSystem.php        |  3 +-
 inc/classes/main/factories/class_             | 37 ++++++++++++++
 inc/classes/main/factories/logger/.htaccess   |  1 +
 .../factories/logger/class_LoggerFactory.php  | 51 +++++++++++++++++++
 .../debug/class_DebugMiddleware.php           |  1 +
 5 files changed, 92 insertions(+), 1 deletion(-)
 create mode 100644 inc/classes/main/factories/class_
 create mode 100644 inc/classes/main/factories/logger/.htaccess
 create mode 100644 inc/classes/main/factories/logger/class_LoggerFactory.php

diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php
index e26468c2..e3d15848 100644
--- a/inc/classes/main/class_BaseFrameworkSystem.php
+++ b/inc/classes/main/class_BaseFrameworkSystem.php
@@ -444,7 +444,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
 	}
 
 	/**
-	 * Destructor for all classes
+	 * Destructor for all classes. You should not call this method on your own.
 	 *
 	 * @return	void
 	 */
@@ -1871,6 +1871,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
 	 *
 	 * @param	$className		Name of the class (currently unsupported)
 	 * @return	$debugInstance	An instance of a debugger class
+	 * @deprecated	Not fully, as the new Logger facilities are not finished yet.
 	 */
 	public final static function createDebugInstance ($className) {
 		// Is the instance set?
diff --git a/inc/classes/main/factories/class_ b/inc/classes/main/factories/class_
new file mode 100644
index 00000000..d05b8441
--- /dev/null
+++ b/inc/classes/main/factories/class_
@@ -0,0 +1,37 @@
+<?php
+/**
+ * A ??? factory
+ *
+ * @author		Roland Haeder <webmaster@shipsimu.org>
+ * @version		0.0.0
+ * @copyright	Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 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/>.
+ */
+class ???Factory extends BaseFactory {
+	/**
+	 * Protected constructor
+	 *
+	 * @return	void
+	 */
+	protected function __construct () {
+		// Call parent constructor
+		parent::__construct(__CLASS__);
+	}
+}
+
+// [EOF]
+?>
diff --git a/inc/classes/main/factories/logger/.htaccess b/inc/classes/main/factories/logger/.htaccess
new file mode 100644
index 00000000..3a428827
--- /dev/null
+++ b/inc/classes/main/factories/logger/.htaccess
@@ -0,0 +1 @@
+Deny from all
diff --git a/inc/classes/main/factories/logger/class_LoggerFactory.php b/inc/classes/main/factories/logger/class_LoggerFactory.php
new file mode 100644
index 00000000..202f23d0
--- /dev/null
+++ b/inc/classes/main/factories/logger/class_LoggerFactory.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * A Logger factory
+ *
+ * @author		Roland Haeder <webmaster@shipsimu.org>
+ * @version		0.0.0
+ * @copyright	Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 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/>.
+ */
+class LoggerFactory extends BaseFactory {
+	/**
+	 * Protected constructor
+	 *
+	 * @return	void
+	 */
+	protected function __construct () {
+		// Call parent constructor
+		parent::__construct(__CLASS__);
+	}
+
+	/**
+	 * Creates a logger instance for given FrameworkInterface. This allows every
+	 * class that implements FrameworkInterface to have an own logger. Surely
+	 * this factory and the logger itself cannot have an own logger as this would
+	 * lead to an endless loop: Get factory instance, get a logger for the factory
+	 * instance which ivokes the factory's method again.
+	 *
+	 * @param	$objectInstance		An instance of a FrameworkInterface class
+	 * @return	$loggerInstance		An instance of a Logger class
+	 */
+	public static final function createLoggerInstance (FrameworkInterface $objectInstance) {
+		// @TODO Unfinished work
+	}
+}
+
+// [EOF]
+?>
diff --git a/inc/classes/middleware/debug/class_DebugMiddleware.php b/inc/classes/middleware/debug/class_DebugMiddleware.php
index 3789e647..045a3308 100644
--- a/inc/classes/middleware/debug/class_DebugMiddleware.php
+++ b/inc/classes/middleware/debug/class_DebugMiddleware.php
@@ -9,6 +9,7 @@
  * @copyright	Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team
  * @license		GNU GPL 3.0 or any newer version
  * @link		http://www.shipsimu.org
+ * @deprecated	See LoggerFactory for a more flexible approach
  *
  * 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
-- 
2.39.5