Задать вопрос

Динамическое создание классов (PHP)?

Требуется объявлять классы с именем, переданным в качестве параметра. Не создавать объект уже объявленного класса, а именно объявлять классы.
Я реализовал это с использованием 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().
  • Вопрос задан
  • 7967 просмотров
Подписаться 5 Оценить 13 комментариев
Решение пользователя Eugene Mosyukov К ответам на вопрос (6)
GeneMoss
@GeneMoss
void
Как минимум, нужно делать проверку class_exists().

P.S.: Но затея весьма спорная.
Ответ написан
Комментировать