我可以在 PHP 中传递一个类型作为参数吗?

Can I pass a type as parameter in PHP?

我想传递(任何类型,不仅是 PHP 的基元)类型作为函数参数。更像是 C++ 的模板。 PHP 可以吗?虚构代码:

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

我尝试将类型名称作为字符串传递,然后将 settype() 用于该类型的变量,但 settype() 仅适用于 PHP 的基元类型。我的目标实际上是传递一个 class 类型作为参数。

如果你想像上面那样实例化,将类名作为字符串传递然后实例化怎么样!

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

我看到你已经接受了一个答案,但是从原来的post来看,它显示在函数中传递了一个对象变量。对于那些需要这样做的人来说,除了能够将 class 的名称作为字符串传递之外,您还可以这样做:

class Blah
{
    public $x = 123;
}


function Foo($b) {
    $class = get_class($b);
    $object = new $class();
    var_dump($object);
}

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