¿Cómo crear de forma segura y dinámica una instancia de una clase PHP existente?

Digamos que tengo un archivo Foo.php:

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

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

?>

Si quiero crear una clase de tipo Foo, podría usar:

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

Pero digamos que he creado unPatrón de cadena de mando y tengo un archivo de configuración que registra todas las clases posibles y crea una instancia de estas clases basada en cadenas que están presentes en el archivo de configuración.

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...
}

¿Cómo me aseguro de que estas clases estén realmente donde el archivo de configuración dice que están? ¿Y qué sucede si una clase no está allí (pero el archivo está), creará una instancia de una clase generada dinámicamente, que no tiene una descripción más detallada?

Respuestas a la pregunta(2)

Su respuesta a la pregunta