pay_factory.class.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. /*
  3. * 支付模块调用工厂
  4. */
  5. class pay_factory {
  6. public function __construct($adapter_name = '', $adapter_config = array()) {
  7. $this->set_adapter($adapter_name, $adapter_config);
  8. }
  9. /**
  10. * 构造适配器
  11. * @param $adapter_name 支付模块code
  12. * @param $adapter_config 支付模块配置
  13. */
  14. public function set_adapter($adapter_name, $adapter_config = array()) {
  15. if (!is_string($adapter_name)) return false;
  16. else {
  17. $class_name = ucwords($adapter_name);
  18. pc_base::load_app_class($class_name,'','0');
  19. $this->adapter_instance = new $class_name($adapter_config);
  20. }
  21. return $this->adapter_instance;
  22. }
  23. public function __call($method_name, $method_args) {
  24. if (method_exists($this, $method_name))
  25. return call_user_func_array(array(& $this, $method_name), $method_args);
  26. elseif (
  27. !empty($this->adapter_instance)
  28. && ($this->adapter_instance instanceof paymentabstract)
  29. && method_exists($this->adapter_instance, $method_name)
  30. )
  31. return call_user_func_array(array(& $this->adapter_instance, $method_name), $method_args);
  32. }
  33. }
  34. ?>