Как передать класс в качестве параметра функции PHP - PullRequest
1 голос
/ 10 апреля 2020

Я хочу иметь возможность передать класс (не объект класса) в функцию PHP. Желаемым конечным результатом всего этого является возможность вызова функций stati c, присутствующих в этом классе. Возьмем, к примеру:

class MyClass extends Model
{
  public static function doThing()
  {
    return static::callOtherClassFunction();
  }
}

Теперь у меня есть функция, структурированная так:

function do_thing_with_any_class($class)
{
  return $class::doThing();
}

Но, если я вызываю do_thing_with_any_class(MyClass::class), я получаю синтаксическую ошибку.

Возможно ли то, что я хочу сделать в PHP идиоматически? (т.е. без использования Reflection для получения функции stati c).

PS: Это помечено как 'Laravel', потому что MyClass представляет мою 'Базовую модель' - класс, который наследуется непосредственно от класса Laravel Model. Но вопрос определенно более общий, чем этот.

1 Ответ

2 голосов
/ 10 апреля 2020

Вы можете передать сам класс в качестве параметра и переменную в качестве экземпляра следующим образом:

function do_thing_with_any_class(MyClass $class)
{
  return $class::doThing();
}
...