Pytasz niezwykle lekki, zróbmy tak;)
Timothy Boronczyk napisał piękny minimalny SPL autoloadery: http://zaemis.blogspot.fr/2012/05/writing-minimal-psr-0-autoloader.html
I skondensowany kod tak:
function autoload1($class) {
preg_match('/^(.+)?([^\\\\]+)$/U', ltrim($class, '\\'), $match));
require str_replace('\\', '/', $match[ 1 ])
. str_replace([ '\\', '_' ], '/', $match[ 2 ])
. '.php';
}
Następnie porównaj (zmodernizowane wersje) tego [autoload3] z short @Alix Axel code [autoload4]:
function autoload3($c){preg_match('/^(.+)?([^\\\\]+)$/U',ltrim($c,'\\'),$m);require str_replace('\\','/',$m[1]).str_replace(['\\','_'],'/',$m[2]).'.php';}
function autoload4($c){require (($n=strrpos($c=ltrim($c,'\\'),'\\'))!==false?str_replace('\\','/',substr($c,0,++$n)):null).str_replace('_','/',substr($c,$n)).'.php';}
autoload3 jest najkrótszy!
Użyjmy stabilną & niezwykle lekkie (175b!) Plik autoloadera:
<?php spl_autoload_register(function ($c){preg_match('/^(.+)?([^\\\\]+)$/U',ltrim($c,'\\'),$m);require str_replace('\\','/',$m[1]).str_replace(['\\','_'],'/',$m[2]).'.php';});
Może jestem szalony, ale poprosiłeś dla ekstremalnych, nie?
EDIT: Dzięki Alix Axel, mam skrócić kod (!) I tylko 100b stosowane obejmują zamiast wymagać w przypadku gdy masz różne strategię autoloading dla starych bibliotekami (i wtedy różnym autoloaderze w spl autoload stosie. ..).
<?php spl_autoload_register(function($c){@include preg_replace('#\\\|_(?!.+\\\)#','/',$c).'.php';});
Jeśli chcemy, aby było krótsze/lepiej, skorzystaj z tego gist.
+1, nie próbowałem, ale myślę, że twoja wersja może być jeszcze krótsza, jeśli użyjesz 'preg_replace()' zamiast 'preg_match()' + 'str_replace()'. –
Nie jestem całkowicie pewien, że 'preg_match() 'jest szybszy niż inne równoważne opcje PHP. – TCB13