PHP: как создать и зарегистрировать класс во время выполнения

Есть ли официальный / рекомендуемый способ объявить / определить / зарегистрировать новый класс во время выполнения в PHP?

В основном я хочу создать классы на основе определения, хранящегося в базе данных, как свойств, так и методов.

Я нашел некоторые статьи / темы, но все они на самом деле старые, поэтому мне было интересно, существует ли какой-нибудь элегантный / эффективный способ сделать это. Мое удивление в том, что информации об этом не так много, как я думал.

Это так плохо? Насколько я знаю, PHP всегда сохраняет определение класса в памяти, поэтому я не вижу проблем в объявлении класса во время выполнения, поскольку это в основном тот же результат, но, возможно, я ошибаюсь.

Я думаю, что сейчас это не актуально, но я работаю с Laravel в этом проекте.

Спасибо!

2

Решение

Да.

<?php

$foobar = "foobar";

eval("class $foobar {" .
"function __construct(\$i) {" .
"echo \"Dark magic ritual complete. \$i virgins sacrificed to satan.\"; " .
"}" .
" }");

$evil = new $foobar(5);echo "<br /><br />";

var_dump($evil);

Производит:

Ритуал темной магии завершен. 5 девственниц принесены в жертву сатане.

object (foobar) # 1 (0) {}

Я не собираюсь читать вам лекции по семантике, но это ужасно плохая идея, и вам следует пересмотреть использование классов, чтобы облегчить то, что нужно записям в базе данных. Сам по себе класс не является особенным, но использование класса для обработки записи в базе данных вполне приемлемо.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]