Могу ли я передать тип в качестве параметра в PHP?

Я хотел бы передать (любой тип, не только примитивы PHP) Тип в качестве параметра функции. Больше похоже на шаблон C ++. Возможно ли это в PHP? мнимый код:

function foo(T a)
{
$output = new T();
//do something.
}

Я попытался передать имя типа в виде строки, а затем использовать settype() к переменной этого типа, но settype() работать только с типами примитивов PHP. Моя цель на самом деле передать тип класса в качестве параметра.

2

Решение

Если вы хотите создать что-то похожее на приведенное выше, как насчет передачи имени класса в виде строки, а затем создания его экземпляра!

function foo($obj_string)
{
$object = new $obj_string();
//do stuff with $object
}
6

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

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

class Blah
{
public $x = 123;
}function Foo($b) {
$class = get_class($b);
$object = new $class();
var_dump($object);
}

$aa = new Blah();
Foo($aa);
2

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