Динамическая ссылка на комбинацию объекта и метода в переполнении стека

Я знаю, что если у меня есть функция в PHP с именем «foo», я могу вызвать ее динамически следующим образом:

$var = "foo";
$var();

И если foo является методом для объекта с именем «bar», я могу вызвать его динамически следующим образом:

$var = "foo";
$bar->$var();

Единственная проблема здесь — мне нужно указать не только метод из объект — но мне нужно также динамически указать сам объект — и передать комбинацию в библиотеку, которая использует строковое соглашение для динамических функций. Есть ли способ сделать это?

1

Решение

Очень похоже на то, что вы сделали с именем метода, вы можете указать имя класса и вызвать конструктор объекта:

$objectVar = 'myObject';
$bar = new $objectVar();
$objectVar = 'newObject';
$newBar = new $objectVar();

Это даст вам один объект для каждого из классов myObject и newObject.

2

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

Или, если вы хотите указать объект, а не инициировать новый, вы можете использовать

$var = "objectName";
$func = "functionName";
$$var->$func();
1

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