使用string创buildPHP类实例

我有两个类:

class ClassOne { }和class ClassTwo {} 。 我得到一个可以是“一”或“两”的string。 而不是使用长开关语句,如:

 switch($str) { case "One": return new ClassOne(); case "Two": return new ClassTwo(); } 

无论如何,我可以创build一个实例使用一个string,即new Class("Class" . $str);

谢谢,

乔尔

是的你可以!

 $str = "One"; $class = "Class".$str; $object = new $class(); 

其他很酷的东西,你可以在PHP中做的是:
variablesvariables :

 $personCount = 123; $varname = 'personCount'; echo $$varname; // echo's 123 

和可变的function和方法。

 $func = 'my_function'; $func('param1'); // calls my_function('param1'); $method = 'doStuff'; $object = new MyClass(); $object->$method(); // calls the MyClass->doStuff() method. 

你可以简单地使用下面的语法来创build一个新的类(如果你正在创build一个工厂,这是很方便的):

 $className = $whatever; $object = new $className; 

作为一个(非常粗糙的)示例工厂方法:

 public function &factory($className) { require_once($className.'php'); if(class_exists($className)) return new $className; die('Cannot create new "'.$className.'" class - includes not found or class unavailable.'); } 

看看http://www.php.net/manual/en/language.oop5.basic.php的例子3

 $className = 'Foo'; $instance = new $className(); // Foo()