我很难找到如何在PHP的工厂类中实现“可配置”行为。
我已经上课了,它在构造函数中将另一个类作为参数。 参数类可以在其构造函数中使用许多参数。我的主类的一个实例可能看起来像这样
$instance = new MyClass(new OtherClass(20, true));
$instance2 = new MyClass(new DifferentClass('test'));
这是相当笨拙的,并且有很多问题因此我想把它变成工厂类。 问题是这个工厂需要知道如何实例化参数类,因为这个类在构造函数中可以有任意数量的参数。
我希望能够做到这样的事情
$instance = Factory::build('OtherClass');
$instance2 = Factory::build('DifferentClass');
让工厂从配置数组或类似数据中检索参数。
答案 0 :(得分:1)
如果将类列表及其构造函数参数存储为数组。类似的东西:
array(
'OtherClass' => array(20, true),
)
然后,您可以使用reflection api和newInstanceArgs函数构建类。