Скажите, у меня есть файл 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...
}
Как мне убедиться, что эти классы действительно находятся там, где в конфигурационном файле написано, что они есть? И что произойдет, если класс не существует (но файл есть), создаст ли он экземпляр динамически сгенерированного класса, который не имеет дальнейшего описания?