0
class foo(){

   function bar()
   {
     $classInstance = $this->createClassInstance($params);
     $result = $classInstance->getSomething();
   }

   function createClassInstance($params)
   {
     require 'path/to/class.php';
     $myClass = new Class;
     $myClass->acceptParams($params['1']);
     $myClass->acceptMoreParams($params['2']);
     .... lots more params
     return $myClass;
   }

}

我可以通过调用返回类对象的方法来启动一个新类吗?有问题的类有很多参数,我需要在 bar() 中多次调用它,所以我认为这样做会更整洁,但我无法让它工作并想检查它是否可能 + 好实践?

4

2 回答 2

2

这就是所谓的工厂类(Factory OO Design Pattern)。

应该如何在 PHP 中完成:http ://www.php.net/manual/en/language.oop5.patterns.php

于 2009-04-07T19:50:32.567 回答
0

我认为您所描述的是工厂模式,但是您使用参数来设置类变量,就像在构造函数中一样,那么为什么不直接使用呢?

编辑:

啊,如果您在大多数情况下使用相同的参数,那么您肯定需要工厂模式。只需使用静态函数返回类的实例,并将其放入您要返回的类的类型中:

class MyClass
{
    public static function factory($params)
    {
        $myClass = new MyClass;
        $myClass->acceptParams($params['1']);
        $myClass->acceptMoreParams($params['2']);
        //.... lots more params
        return $myClass;
    }
}

class foo(){

   function bar()
   {
     $classInstance = MyClass::factory(param1, param2);
   }
}
于 2009-04-07T19:51:26.153 回答