Php 实现可配置工厂

Php 实现可配置工厂,php,configuration,factory,Php,Configuration,Factory,我很难找到如何在PHP的工厂类中实现“可配置”行为 我有一个at类,它在构造函数中接受另一个类作为参数。 argument类可以在其构造函数中接受多个参数。我的主类的一个实例可以如下所示 $instance = new MyClass(new OtherClass(20, true)); $instance2 = new MyClass(new DifferentClass('test')); $instance = Factory::build('OtherClass'); $instanc

我很难找到如何在PHP的工厂类中实现“可配置”行为

我有一个at类,它在构造函数中接受另一个类作为参数。 argument类可以在其构造函数中接受多个参数。我的主类的一个实例可以如下所示

$instance = new MyClass(new OtherClass(20, true));
$instance2 = new MyClass(new DifferentClass('test'));
$instance = Factory::build('OtherClass');
$instance2 = Factory::build('DifferentClass');
这是相当笨拙的,并且有许多问题,因此我想将其转移到工厂类中。 问题是这个工厂需要知道如何实例化argument类,因为这个类在构造函数中可以有任意数量的参数

最好我能做这样的事情

$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),
)

然后,您可以使用和函数构造类。

如果您试图创建一个灵活的factory类,我认为您应该让factory不关心它控制的是什么类。它的目标应该是控制事物的创建时间和方式,当然这些属性应该是可控的。但是,如果这家工厂制造的是“猫”、“超级复杂的结构”、“其他工厂”,那么它就不应该制造汽车,这正是我所寻找的。事实上,我已经在代码的其他部分使用了反射api,所以效果很好。谢谢