通过调用返回该类实例的函数启动一个类 - PHP?

时间:2009-04-07 19:48:13

标签: php class initialization

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()内多次调用它,所以我觉得这样做会更简洁,但我不能让它工作,想检查它是否可能+好练?

2 个答案:

答案 0 :(得分:2)

这叫做工厂类(Factory OO Design Pattern)。

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

答案 1 :(得分:0)

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

修改

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

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);
   }
}