php 中的动态类名

2022-08-30 15:07:23

我有一个名为 和 的基类,用于扩展此类,如 、、、、、、等。fieldtextselectradiocheckboxdatetimenumber

使用 在目录中以递归方式动态调用扩展类的类。我这样做是为了使我(和其他人)只能通过添加单个文件轻松添加新的字段类型fieldinclude_once()

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

例如,一个名称为:checkbox

$field_type = 'checkbox';

$field = new {$field_type}();

也许这会起作用?但事实并非如此?

$field_type = 'checkbox';

$field = new $$field_type();

答案 1

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

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

所以你的代码应该可以正常工作。你又有什么问题?

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


答案 2

如果您使用的是命名空间,则需要添加它,即使您位于命名空间中也是如此。

namespace Foo;

$my_var = '\Foo\Bar';
new $my_var;

否则,它将无法获取该类。


推荐