【发布时间】:2014-08-29 07:50:49
【问题描述】:
在我正在创建的应用程序中,我需要将未知数量的参数传递给类的未知构造函数。 类(+ 命名空间)是一个字符串,在 $class 中。 参数在一个数组中。
这个应用程序将在几个月内部署,所以我们认为我们可以在 PHP 5.6 中开发它。 所以我认为这个问题的解决方案是:
$instance = new $class(...$args);
这是有效的......
但是我的同事不愿意接受这个,因为CI服务器不理解这行代码。 他们的解决方案是:
$reflect = new \ReflectionClass($class);
$instance = $reflect->newInstanceArgs($args)
现在:两者都工作正常,所以这不是问题。 但我的想法是反射比使用其他方式(如 PHP 5.6 splat 运算符)要慢。
还有一个问题:反射是一种好方法吗,我应该从 CI 服务器理解该行的那一刻起使用 splat 运算符吗?
【问题讨论】:
-
以任何一种方式对其进行基准测试。如果您发现任何显着差异,请给我们写明信片。
-
未知类?这听起来像是一个非常糟糕的设计。
-
为什么不使用一个变量作为参数数组?
-
未知类:在那个级别我只确定它是一个实现接口的类。我使用的方法是将数据从一个数据源转换为数据类。对于方法本身,类是未知的,因为它是抽象的。