如何从PHP中的字符串类名实例化?

时间:2014-04-21 22:51:49

标签: php

如何创建返回方法名称的新实例?不幸的是我收到了这个错误:

  

错误:类名必须是有效对象或字符串

这是我的代码:

class Foo {
  public function selClass(){
    return 'Home()';
  }
}


$foo = new Foo();
$bar = new $foo->selClass();

3 个答案:

答案 0 :(得分:9)

按照您的示例,此处为龙

$bar = new ${!${''}=substr($foo->selClass(), 0, -2)};

如果您在代码中使用此功能,则可以在Google上找到工作。

答案 1 :(得分:4)

听起来你正在寻找这样的东西:

class Home {
  public function run(){
    return 'hello world';
  }
}

class Foo {
  public function selClass(){
    return 'Home';
  }
}


$foo = new Foo();
$barClass = $foo->selClass();
$bar = new $barClass;  

echo $bar->run();  // hello world

请注意,您在selClass中指定的类的名称必须单独出现,不带括号,并且$barClass后面的括号是可选的。

答案 2 :(得分:1)

使用" Home"没有牙套。如果仍然无效,请尝试将其保存到变量,然后调用new $var