我知道这个问题听起来很模糊,所以我会用一个例子来说明:

$var = 'bar';
$bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()');

这就是我想做的.你会怎么做呢?当然,我可以像这样使用eval():

$var = 'bar';
eval('$bar = new '.$var.'Class(\'var for __construct()\');');

但我宁愿远离eval().没有eval()有什么方法可以做到这一点吗?

推荐答案

首先将类名放入变量中:

$classname=$var.'Class';

$bar=new $classname("xyz");

这是你经常会看到的那种被工厂模式包裹起来的东西.

详见Namespaces and dynamic language features.

Php相关问答推荐

如何使用查询范围在Statamic中按组过滤用户?

PHP FFI—将PHP数组转换为C指针数组

为什么调用干预\映像引发错误驱动程序\GD\Driver not found?

在Laravel中,如果我用session—put()存储一些信息,客户端浏览器是否可以使用这些信息?>

Laravel 10 -扩展现有的artisan命令?

根据未用于变体的产品属性隐藏WooCommerce发货方式

使用PHP curl的Amazon SP API批处理调用

WooCommerce在购物车项目中复制产品而不增加产品数量

Symfony Validator:如何使用XML表示法验证深度嵌套的数据?

强制客户在注册时 Select WooCommerce角色

如何在PHP中根据会话将用户重定向到不同的页面?

隐藏WooCommerce管理子菜单;主页;来自store 经理

$this->;db->;update();CodIgnitor中的功能不工作

htaccess 配置提供静态文件和动态文件

打折时更改 Woocommerce 产品名称

WooCommerce 中一件免费产品的数量折扣

通过添加计数器修改文本区域表单中的重复值

Laravel 10 中的自定义类未找到

产品页面自定义复选框可对 WooCommerce 购物车小计启用百分比折扣

Xdebug 不会在断点处停止