使用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()