php - 用字符串创建PHP类实例

我有两个类:

ClassOne { }ClassTwo {} 类。 我有一个字符串,该字符串可以是"One"或者"Two"。 使用以下语句代替长switch语句:


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

使用字符串,有什么办法什么方法能创建一个实例 new Class("Class". $str);

谢谢,

Joel

时间:

是的,你可以 !


$str ="One";
$class ="Class".$str;
$object = 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. 

你可以简单地使用以下语法创建一个新类( 如果创建一个 factory ),则该语法很方便:


$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()

...