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

时间:2015-02-23 20:51:16

标签: php types

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

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

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

2 个答案:

答案 0 :(得分:6)

如果要实例化上述内容,请将类名作为字符串传递,然后实例化它!

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

答案 1 :(得分:2)

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

class Blah
{
    public $x = 123;
}


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

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