Требуется объявлять классы с именем, переданным в качестве параметра. Не создавать объект уже объявленного класса, а именно
объявлять классы.
Я реализовал это с использованием
eval():
$class = preg_replace('/([^_a-z0-9]+)/i', '_', $class);
$class = is_numeric(substr(trim($class), 0, 1)) ? ('_' . $class) : $class;
eval('class ' . $class . ' extends Page { /* ... */ }');
Собственно просьба проверить защиту
eval() от внедрения левого кода (я вроде бы ошибок не нашёл, но мало ли), а лучше - подсказать реализацию без
eval().