php中的动态类名

and*_*gan 19 php oop wordpress

我有称为基本类field和扩展此类如类text,select,radio,checkbox,date,time,number,等.

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

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

例如一个名字的类checkbox:

$field_type = 'checkbox';

$field = new {$field_type}();
Run Code Online (Sandbox Code Playgroud)

也许这会起作用?但它没有?

$field_type = 'checkbox';

$field = new $$field_type();
Run Code Online (Sandbox Code Playgroud)

sg3*_*g3s 37

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

$type = 'Checkbox'; 
$field = new $type();
echo get_class($field); // Output: Checkbox
Run Code Online (Sandbox Code Playgroud)

所以你的代码应该可以工作我想象.你的问题又是什么?

如果您想创建一个包含所有扩展类的类,那么这是不可能的.这不是PHP中的类如何工作.


Sam*_*nne 14

如果您使用的是命名空间,即使您在命名空间内,也需要添加它.

namespace Foo;

$my_var = '\Foo\Bar';
new $my_var;
Run Code Online (Sandbox Code Playgroud)

否则它将无法上课.

  • 您可以使用 [`__NAMESPACE__` 常量](http://php.net/manual/en/language.namespaces.nsconstants.php) :`$my_var = __NAMESPACE__ 自动化 PHP >= 5.3。'\酒吧';`。 (3认同)

gen*_*sis 6

只是

$type = 'checkbox';
$filed = new $type();
Run Code Online (Sandbox Code Playgroud)

是必须的.你不需要添加括号