我有两个课,class ClassOne { }和class ClassTwo {}。我得到的字符串可以是"One"或"Two"。
class ClassOne { }
class ClassTwo {}
"One"
"Two"
而不是使用长switch语句,例如:
switch
switch ($str) { case "One": return new ClassOne(); case "Two": return new ClassTwo(); }
有没有一种方法可以使用字符串创建实例,即new Class("Class" . $str);?
new Class("Class" . $str);
是的你可以!
$str = 'One'; $class = 'Class'.$str; $object = new $class();
使用名称空间时,请提供标准名称:
$class = '\Foo\Bar\MyClass'; $instance = new $class();
您可以在php中执行的其他一些很酷的工作是:
$personCount = 123; $varname = 'personCount'; echo $$varname; // echo's 123
以及可变的函数和方法。
$func = 'my_function'; $func('param1'); // calls my_function('param1'); $method = 'doStuff'; $object = new MyClass(); $object->$method(); // calls the MyClass->doStuff() method.