代码之家  ›  专栏  ›  技术社区  ›  Decko

实现可配置工厂

  •  0
  • Decko  · 技术社区  · 15 年前

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

    我在类中得到了,它将另一个类作为其构造函数中的参数。 参数类的构造函数中可以有多个参数。我的主类的一个实例可能看起来像这样

    $instance = new MyClass(new OtherClass(20, true));
    $instance2 = new MyClass(new DifferentClass('test'));
    

    这是相当笨拙的,有很多问题,因此我想把它转移到工厂类。 问题是这个工厂不知何故需要知道如何实例化参数类,因为这个类在构造函数中可以有任意数量的参数。

    最好我能做这样的事

    $instance = Factory::build('OtherClass');
    $instance2 = Factory::build('DifferentClass');
    

    并让工厂从配置数组或类似数组中检索参数。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Yacoby    15 年前

    如果将类及其构造函数参数列表存储为数组。比如:

    array(
        'OtherClass' => array(20, true),
    )
    

    然后可以使用 reflection api 以及 newInstanceArgs 功能。

    推荐文章