一尘不染

用字符串创建PHP类实例

php

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

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

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

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


阅读 434

收藏
2020-05-26

共1个答案

一尘不染

是的你可以!

$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.
2020-05-26