Continued:
authorRoland Häder <roland@mxchange.org>
Fri, 13 Apr 2018 23:37:57 +0000 (01:37 +0200)
committerRoland Häder <roland@mxchange.org>
Fri, 13 Apr 2018 23:37:57 +0000 (01:37 +0200)
- rewrote ObjectFactory for some performance improvement, yet still more needs
  to be done, maybe some static "cache" array and then use reflection to clean
  up old instance?
- debug messages are now "hidden" in HTML comment blocks
- InvalidClassNameException is now emptied and InvalidArgumentException is used
  instead

Signed-off-by: Roland Häder <roland@mxchange.org>
framework/main/classes/factories/objects/class_ObjectFactory.php
framework/main/classes/output/debug/web/class_DebugWebOutput.php
framework/main/exceptions/main/class_InvalidClassNameException.php

index f06a70a..1066e47 100644 (file)
@@ -55,23 +55,26 @@ class ObjectFactory extends BaseFactory {
         * @throws      InvalidArgumentException        If className is empty or the name not following naming-convention
         */
        public static final function createObjectByName ($className, array $args = array()) {
-               // First get an instance of this factory
-               $factoryInstance = new ObjectFactory();
-
-               // Split class name on backslash to check naming-convention
-               $classNameParts = explode("\\", $className);
-
                // Is the class name valid and is the class there?
                if (empty($className)) {
                        // Throw an exception here
                        throw new InvalidArgumentException('Parameter "className" is empty');
                } elseif (!class_exists($className)) {
+                       // First get an instance of this factory
+                       $factoryInstance = new ObjectFactory();
+
                        // Then throw an exception
                        throw new NoClassException(array($factoryInstance, $className), self::EXCEPTION_CLASS_NOT_FOUND);
-               } elseif (count($classNameParts) < 3) {
+               }
+
+               // Split class name on backslash to check naming-convention
+               $classNameParts = explode("\\", $className);
+
+               // Okay, does it follow naming-convention?
+               if (count($classNameParts) < 4) {
                        // Namespaces are missing
                        throw new InvalidArgumentException(sprintf('Class name "%s" is not conform to naming-convention: Tld\Domain\Project\Package[\SubPackage...]\SomeFooBar', $className));
-               }
+               } // END - if
 
                // Create method name
                $methodName = sprintf('create%s', self::stripNamespaceFromClassName($className));
@@ -111,16 +114,16 @@ class ObjectFactory extends BaseFactory {
         *
         * @param       $fullClassName  Class name with namespace
         * @return      $shortClassName Stripped class name (no namespace)
-        * @throws      InvalidClassNameException       If the class name does not follow naming convention
+        * @throws      InvalidArgumentException        If the class name does not follow naming convention
         */
        private static function stripNamespaceFromClassName ($fullClassName) {
                // The class name should contain at least 2 back-slashes, so split at them
                $classNameParts = explode("\\", $fullClassName);
 
-               // At least 3 parts should be there
-               if (count($classNameParts) < 3) {
-                       // Namespace scheme is: Project\Package[\SubPackage...]
-                       throw new InvalidClassNameException($fullClassName, self::EXCEPTION_INVALID_CLASS_NAME);
+               // At least 4 parts should be there
+               if (count($classNameParts) < 4) {
+                       // Namespace scheme is: Tld\Project\Package[\SubPackage...]
+                       throw new InvalidArgumentException($fullClassName, self::EXCEPTION_INVALID_CLASS_NAME);
                } // END - if
 
                // Get last element
index 930ff9e..68dc7ae 100644 (file)
@@ -62,9 +62,9 @@ class DebugWebOutput extends BaseDebugOutput implements Debugger, OutputStreamer
         * @return      void
         */
        public final function outputStream ($output, $stripTags = false) {
-               // Strip out <br />
+               // Strip out any <br />
                $output = str_replace('<br />', '', $output);
-               print(stripslashes($output)."<br />\n");
+               printf('<!-- %s -->' . PHP_EOL, stripslashes($output));
        }
 
        /**
index 959807d..76d010f 100644 (file)
@@ -1,51 +1,2 @@
 <?php
-// Own namespace
-namespace Org\Mxchange\CoreFramework\Deprecated;
-
-// Import framework stuff
-use Org\Mxchange\CoreFramework\Generic\FrameworkException;
-use Org\Mxchange\CoreFramework\Generic\FrameworkInterface;
-
-/**
- * An exception thrown when a class name is invalid after naming convention.
- *
- * @author             Roland Haeder <webmaster@shipsimu.org>
- * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team
- * @license            GNU GPL 3.0 or any newer version
- * @link               http://www.shipsimu.org
- * @deprecated Don't use this anymore
- *
- * 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 InvalidClassNameException extends FrameworkException {
-       /**
-        * The constructor
-        *
-        * @param       $className      Class name that is invalid
-        * @param       $code   Code number for the exception
-        * @return      void
-        */
-       public function __construct ($className, $code) {
-               // Add a message around the missing class
-               $message = sprintf('[%d]: Class name "%s" is not conform to naming-convention: Tld\Domain\Project\Package[\SubPackage...]\SomeFooBar',
-                       $this->getLine(),
-                       $className
-               );
-
-               // Call parent constructor
-               parent::__construct($message, $code);
-       }
-
-}
+// [EOF]