Buď to môžeš spraviť tak, že budeš kontrolovať všetky možnosti:
$parts = explode('/', $url);
switch (array_shift($parts)) {
case 'knihovna':
switch (array_shift($parts)) {
case 'cesko':
switch (array_shift($parts)) {
case 'klasika':
return new knihovna\cesko\klasika;
}
return new knihovna\cesko;
case 'slovensko':
switch (array_shift($parts)) {
case 'klasika':
return new knihovna\slovensko\klasika;
}
return new knihovna\slovensko;
}
return new knihovna;
default:
return NULL;
}
Alebo budeš zisťovať, či požadovaná trieda existuje:$class = str_replace('/', '\\', $url);
while (TRUE) {
if (class_exists($class))
return new $class;
$i = strrpos($class, '\\');
if ($i === FALSE)
return NULL;
$class = substr($class, 0, $i);
}