É bastante conhecido que você pode instantaneamente uma classe PHP com um nome dinâmico usando uma variável:
$class = 'Foo_Bar';
$object = new $class();
é o mesmo que
$object = new Foo_Bar();
Fica um pouco mais complicado se sua classe for definida em um namespace e você a instanciar de fora desse namespace. Se você estiver codificando uma classe, precisará usar uma barra invertida inicial para fazer referência à classe.
namespace App;
$object = new FooBar();
// this would try to instantiate AppFooBar
//$object = new FooBar();
Mas se você estiver usando um nome dinâmico, a string não deve ter a barra invertida inicial, porque a barra invertida não faz parte do nome da classe.
namespace App;
$class = 'FooBar';
$object = new $class();
Se você incluir a barra, seu código não será executado no PHP 5.3.2 – você obterá um Class '\Foo\Bar' not found
erro. Este post stackoverflow me esclareceu. Conforme mencionado na postagem, o código funcionará em PHP> = 5.3.3 com ou sem a barra.
Esta dica foi republicada do meu blog, jontai.me