Динамическая ссылка на объектно-методическую комбинацию в PHP
Я знаю, что если у меня есть функция в PHP с именем "foo", я могу вызвать ее динамически следующим образом:
$var = "foo";
$var();
И если foo является методом для объекта с именем "bar", я могу вызвать его динамически следующим образом:
$var = "foo";
$bar->$var();
Единственная проблема здесь - мне нужно указать не только метод объекта, но и динамически указать сам объект - и передать комбинацию в библиотеку, которая использует строковое соглашение для динамического функции. Есть ли способ сделать это?
2 ответа
Очень похоже на то, что вы сделали с именем метода, вы можете указать имя класса и вызвать конструктор объекта:
$objectVar = 'myObject';
$bar = new $objectVar();
$objectVar = 'newObject';
$newBar = new $objectVar();
Это даст вам один объект для каждого из классов myObject и newObject.
Или, если вы хотите указать объект, а не инициировать один новый, вы можете использовать
$var = "objectName";
$func = "functionName";
$$var->$func();