27
Oct '14
Test If a Class Has Been Autoloaded in Laravel
Many of you may have already noticed that PHP’s ‘class_exists’ and similar methods don’t give you any help when you’ve got Composer (or most other autoloader solutions for that matter) loading your classes.
I was looking for a way to check for the existence of a class that was a little more clever than simply trying to look for files in folders so I came up with this little function to extract the information directly from Composer’s class map.
/** * Check if a class is autoloaded * @param string $class_name Class name * @return boolean */ public static function isAutoloaded($class_name) { $class_loader = require(base_path() . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php'); $class_map = $class_loader->getClassMap(); //Remove any preceding slashes in the class name (they may be there due to namespacing but composer doesn't store them in the class map entries) $class_name = preg_replace('/^\\\\+/', '', $class_name); return isset($class_map[$class_name]); }