我有一个称为field的基类,以及扩展了该类的类,例如textselectradiocheckboxdatetimenumber等。

使用field递归地在目录中动态调用扩展include_once()类的类。我这样做是为了让我(和其他人)仅通过添加单个文件即可轻松添加新的字段类型

我想知道的是:有没有一种方法可以从变量名称中动态包含的扩展类之一中证实一个新对象?

例如一个名称为checkbox的类:

$field_type = 'checkbox';

$field = new {$field_type}();

也许这行得通吗?但是不是吗?
$field_type = 'checkbox';

$field = new $$field_type();

最佳答案

这应该可以实例化具有字符串变量值的类:

$type = 'Checkbox';
$field = new $type();
echo get_class($field); // Output: Checkbox

因此,您的代码应该可以正常工作。你又要问什么?

如果要创建一个包含所有扩展类的类,那是不可能的。这不是类在PHP中的工作方式。

关于php - PHP中的动态类名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7131295/

10-16 06:44