我很难找到如何在PHP的工厂类中实现“可配置”行为。
我在类中得到了,它将另一个类作为其构造函数中的参数。 参数类的构造函数中可以有多个参数。我的主类的一个实例可能看起来像这样
$instance = new MyClass(new OtherClass(20, true)); $instance2 = new MyClass(new DifferentClass('test'));
这是相当笨拙的,有很多问题,因此我想把它转移到工厂类。 问题是这个工厂不知何故需要知道如何实例化参数类,因为这个类在构造函数中可以有任意数量的参数。
最好我能做这样的事
$instance = Factory::build('OtherClass'); $instance2 = Factory::build('DifferentClass');
并让工厂从配置数组或类似数组中检索参数。
如果将类及其构造函数参数列表存储为数组。比如:
array( 'OtherClass' => array(20, true), )
然后可以使用 reflection api 以及 newInstanceArgs 功能。