用字符串创建PHP类实例

我有两个课,class ClassOne { }和class ClassTwo {}。我得到的字符串可以是"One"或"Two"。


而不是使用长switch语句,例如:


switch ($str) {

    case "One":

        return new ClassOne();

    case "Two":

        return new ClassTwo();

}

有没有一种方法可以使用字符串创建实例,即new Class("Class" . $str);?


慕田峪9158850
浏览 306回答 3
3回答

SMILET

是的你可以!$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. 

喵喵时光机

您可以简单地使用以下语法来创建新类(如果要创建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.');}
打开App,查看更多内容
随时随地看视频慕课网APP