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