基本的PHP继承

Mat*_*ier 3 php oop

我是OOP的新手,我有一个基本上非常基本的问题,但是我很难以简洁的方式解释它,所以很难找到答案.

我有一个支持信用卡处理的应用程序,我想抽象处理功能,所以我可以添加其他提供程序(linkpoint,authorize.net等).我想我想要做的是创建一个看起来像这样的简单类:

class credit {

    function __construct($provider){
        // load the credit payment class of $provider
    }

}
Run Code Online (Sandbox Code Playgroud)

然后我会让提供者各自扩展这个类,例如

class linkpoint extends credit { }
Run Code Online (Sandbox Code Playgroud)

但我真的想把信用类更像是一个界面.我不想要信用对象,我想做一些像:

$credit = new credit('linkpoint');
Run Code Online (Sandbox Code Playgroud)

然后我希望$ credit成为linkpoint类的一个实例.或者至少,我希望所有方法都执行linkpoint类中定义的代码.

接近这个的最佳方法是什么?或者有更好的方法吗?

Dan*_*Lee 5

这被称为" 工厂模式 "(另见设计模式)

你可以像这样处理它

class Credit
{
  public function __construct($factory)
  {
    $object = null;

    switch($factory) {
      case 'linkpoint':
        $object = new linkpoint();
        break;
      case 'xy':
        //...
    }
    return $object;
  }
}
Run Code Online (Sandbox Code Playgroud)