Как безопасно и динамически создать экземпляр существующего класса PHP?

Скажем, у меня есть файл Foo.php:

<?php
interface ICommand
{
     function doSomething();
}

class Foo implements ICommand
{
    public function doSomething()
    {
        return "I'm Foo output";
    }
}

?>

Если я хочу создать класс типа Foo, я мог бы использовать:

require_once("path/to/Foo.php") ;
$bar = new Foo(); 

Но скажите, что я создалОбразец цепочки командования и у меня есть файл конфигурации, который регистрирует все возможные классы и создает экземпляр этих классов на основе строк, присутствующих в файле конфигурации.

register("Foo", "path/to/Foo.php");

function register($className, $classPath)
{
    require_once($classPath); //Error if the file isn't included, but lets 
                              //assume that the file "Foo.php" exists.
    $classInstance = new $className; //What happens here if the class Foo isn't 
                                     //defined in the file "Foo.php"? 

    $classInstance->doSomething(); //And what happens here if this code is executed at
                                   //all?
    //Etc...
}

Как мне убедиться, что эти классы действительно находятся там, где в конфигурационном файле написано, что они есть? И что произойдет, если класс не существует (но файл есть), создаст ли он экземпляр динамически сгенерированного класса, который не имеет дальнейшего описания?

Ответы на вопрос(1)

Ваш ответ на вопрос