X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=framework%2Fmain%2Fclasses%2Ffactories%2Fobjects%2Fclass_ObjectFactory.php;fp=framework%2Fmain%2Fclasses%2Ffactories%2Fobjects%2Fclass_ObjectFactory.php;h=ebde62499338fe56c3bfe666bd45da5c4955cf60;hp=46d2b6e02ba8b133887cee21acfdf776fbcb1324;hb=5301f9dd1ac83bc13ebfedda721477ec0405e228;hpb=eb04c4ff13087f8e0ca96168e3d718761bedabdb diff --git a/framework/main/classes/factories/objects/class_ObjectFactory.php b/framework/main/classes/factories/objects/class_ObjectFactory.php index 46d2b6e0..ebde6249 100644 --- a/framework/main/classes/factories/objects/class_ObjectFactory.php +++ b/framework/main/classes/factories/objects/class_ObjectFactory.php @@ -7,6 +7,9 @@ use CoreFramework\Configuration\FrameworkConfiguration; use CoreFramework\Generic\EmptyVariableException; use CoreFramework\Loader\NoClassException; +// Import SPL stuff +use \InvalidArgumentException; + /** * An general object factory * @@ -51,11 +54,15 @@ class ObjectFactory extends BaseFactory { * @return $objectInstance An instance of the requested object * @throws NoClassException If the requested class was not found * @throws EmptyVariableException If a variable is empty unexpectly + * @throws InvalidArgumentException If class name is not following naming-convention */ - public static final function createObjectByName ($className, array $args=array()) { + 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 @@ -63,6 +70,9 @@ class ObjectFactory extends BaseFactory { } elseif (!class_exists($className)) { // Then throw an exception throw new NoClassException(array($factoryInstance, $className), self::EXCEPTION_CLASS_NOT_FOUND); + } elseif (count($classNameParts) < 3) { + // Namespaces are missing + throw new InvalidArgumentException(sprintf('Class name "%s" is not conform to naming-convention: Project\Package[\SubPackage...]\SomeFooBar', $className)); } // Create method name @@ -85,7 +95,7 @@ class ObjectFactory extends BaseFactory { * @param $args Arguments in an indexed array * @return $objectInstance An instance of the requested object */ - public static final function createObjectByConfiguredName ($configEntry, array $args=array()) { + public static final function createObjectByConfiguredName ($configEntry, array $args = array()) { // Read the configuration entry $className = FrameworkConfiguration::getSelfInstance()->getConfigEntry($configEntry);