Php 扩展变量名类

Php 扩展变量名类,php,php-7,Php,Php 7,这很有效。但是 class A {} $nameA = 'A'; $objA = new $nameA(); 这不起作用(PHP解析错误:语法错误、意外的t_变量、第1行应为t_字符串或t_名称空间或t_NS_分隔符) 是否有任何方法可以扩展变量名类? (一个明显的方法是eval)如果不先定义变量,则无法执行此操作。 我认为正确的选择是: $objB = new class extends $nameA { ... }; 我希望能对您有所帮助。如果不先定义变量,您就不能。 我认为正确的选择是

这很有效。但是

class A {}
$nameA = 'A';
$objA = new $nameA();
这不起作用(
PHP解析错误:语法错误、意外的t_变量、第1行应为t_字符串或t_名称空间或t_NS_分隔符)

是否有任何方法可以扩展变量名类?
(一个明显的方法是
eval

如果不先定义变量,则无法执行此操作。 我认为正确的选择是:

$objB = new class extends $nameA { ... };

我希望能对您有所帮助。

如果不先定义变量,您就不能。 我认为正确的选择是:

$objB = new class extends $nameA { ... };

希望能对您有所帮助。

谢谢您的回答,但您的代码似乎不起作用<代码>PHP解析错误:语法错误,意外的T_变量,第1行需要T_字符串或T_名称空间或T_NS_分隔符
。使用PHP7.0.7进行测试。谢谢您的回答,但您的代码似乎不起作用<代码>PHP解析错误:语法错误,意外的T_变量,第1行需要T_字符串或T_名称空间或T_NS_分隔符。使用PHP7.0.7测试。您如何确切地知道要扩展什么,即从哪里获得以前的方法签名?或者您打算只添加新的、不相关的功能吗?父类是通过依赖项注入动态地给出的,在这里,我们可以断言它的签名是已知的。确实,这个用例听起来可能很奇怪。你能把这个用例放在一个地图上的某个地方,这个地图的角落有、、其他东西吗?基本上,我试图修改框架中使用的类的行为。根据框架中的定义和使用,我无法更改接口。它有数百个方法,这些方法将来可能会改变,所以定义在内部调用原始方法的“中继”方法也不是一个选项。这是不受支持的,也将不受支持。就像
类A扩展$var{}
是不允许的——匿名类对此没有任何改变。您如何确切地知道要扩展什么,即从哪里获得以前的方法签名?或者您打算只添加新的、不相关的功能吗?父类是通过依赖项注入动态地给出的,在这里,我们可以断言它的签名是已知的。确实,这个用例听起来可能很奇怪。你能把这个用例放在一个地图上的某个地方,这个地图的角落有、、其他东西吗?基本上,我试图修改框架中使用的类的行为。根据框架中的定义和使用,我无法更改接口。它有数百个方法,这些方法将来可能会改变,所以定义在内部调用原始方法的“中继”方法也不是一个选项。这是不受支持的,也将不受支持。就像
类A扩展$var{}
是不允许的一样——匿名类对此没有任何改变。