Skip to content

Instantly share code, notes, and snippets.

@mageekguy
Created January 8, 2014 11:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mageekguy/8315338 to your computer and use it in GitHub Desktop.
Save mageekguy/8315338 to your computer and use it in GitHub Desktop.
<?php
return function($directories, $fileFormat = null, $namespaceAliases = null, $classAliases = null) {
$fileFormat = $fileFormat ?: '%s.php';
$namespaceAliases = $namespaceAliases ?: array();
$classAliases = $classAliases ?: array();
spl_autoload_register(function($class) use ($fileFormat, $directories, $namespaceAliases, $classAliases) {
$realClass = (isset($classAliases[$class]) === false ? $class : $classAliases[$class]);
foreach ($namespaceAliases as $alias => $namespace)
{
if ($realClass !== $alias && stripos($realClass, $alias) === 0)
{
$realClass = $namespace . substr($class, strlen($alias));
break;
}
}
if ($realClass !== $class && class_exists($realClass, false) === true)
{
class_alias($realClass, $class);
}
else
{
foreach ($directories as $namespace => $directory)
{
if ($realClass !== $namespace && stripos($realClass, $namespace) === 0)
{
@include($directory . str_replace('\\', DIRECTORY_SEPARATOR, substr($realClass, strlen($namespace))) . '.php');
if (class_exists($realClass, false) === true && $realClass !== $class)
{
class_alias($realClass, $class);
}
break;
}
}
}
}
);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment