Index: t3lib/class.t3lib_div.php =================================================================== --- t3lib/class.t3lib_div.php (revision 6388) +++ t3lib/class.t3lib_div.php (working copy) @@ -4932,9 +4932,7 @@ // Check file-reference prefix; if found, require_once() the file (should be library of code) if (strpos($classRef,':') !== false) { - list($file,$class) = t3lib_div::revExplode(':',$classRef,2); - $requireFile = t3lib_div::getFileAbsFileName($file); - if ($requireFile) t3lib_div::requireOnce($requireFile); + $class = self::getClassNameAndLoadClassFile($classRef); } else { $class = $classRef; } @@ -4957,7 +4955,7 @@ } // Check if class exists: - if (class_exists($class)) { + if (class_exists($class)) { $classObj = t3lib_div::makeInstance($class); // If persistent object should be created, set reference: @@ -4986,6 +4984,11 @@ // holds references of singletons static $instances = array(); + // Check file-reference prefix; if found, require_once() the file (should be library of code) + if (strpos($className, ':') !== false) { + $className = self::getClassNameAndLoadClassFile($className); + } + // Get final classname $className = self::getClassName($className); @@ -5041,6 +5044,23 @@ } /** + * Returns the class name and loads the file if the syntax is given by EXT:extkexy/path_to_file:classname + * class-extension API. + * + * @param string Definition of class with extkey, classfile and classname + * @return string Final class name to instantiate with "new [classname]" + */ + protected function getClassNameAndLoadClassFile($className) { + list($file,$class) = t3lib_div::revExplode(':', $className, 2); + $requireFile = t3lib_div::getFileAbsFileName($file); + if ($requireFile) { + t3lib_div::requireOnce($requireFile); + } + return $class; + } + + + /** * Find the best service and check if it works. * Returns object of the service class. *