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