RBridgeFactory.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace rbridge;
  3. require_once(BASE_HELPER_PATH . '/refill_proxy.php');
  4. require_once(BASE_HELPER_PATH . '/rbridge/IBridge.php');
  5. require_once(BASE_HELPER_PATH . '/rbridge/IBridgeEx.php');
  6. require_once(BASE_HELPER_PATH . '/rbridge/BridgeTrait.php');
  7. require_once(BASE_HELPER_PATH . '/rbridge/wsd/Bridge.php');
  8. require_once(BASE_HELPER_PATH . '/rbridge/fulu/Bridge.php');
  9. require_once(BASE_HELPER_PATH . '/rbridge/fulu_ylyw/Bridge.php');
  10. require_once(BASE_HELPER_PATH . '/rbridge/fulu_youjun/Bridge.php');
  11. require_once(BASE_HELPER_PATH . '/rbridge/fulu_qdw/Bridge.php');
  12. require_once(BASE_HELPER_PATH . '/rbridge/gy/Bridge.php');
  13. use Exception;
  14. use Log;
  15. class RBridgeFactory
  16. {
  17. private static $stInstance = null;
  18. public static function instance()
  19. {
  20. if (self::$stInstance == null) {
  21. self::$stInstance = new RBridgeFactory();
  22. }
  23. return self::$stInstance;
  24. }
  25. private $mMerchants;
  26. private function __construct()
  27. {
  28. $this->mMerchants = [];
  29. }
  30. public function add($mch_name,$parmas)
  31. {
  32. $bridge = $this->find($mch_name);
  33. if(is_null($bridge)) {
  34. return false;
  35. }
  36. $ret = $bridge->add($parmas);
  37. return $ret;
  38. }
  39. public function notify($mch_name,$parmas)
  40. {
  41. $bridge = $this->find($mch_name);
  42. if(is_null($bridge)) {
  43. return false;
  44. }
  45. $ret = $bridge->notify($parmas);
  46. if($ret) {
  47. return "SUCCESS";
  48. }
  49. else {
  50. return "ERROR";
  51. }
  52. }
  53. public function query($mch_name,$parmas)
  54. {
  55. $bridge = $this->find($mch_name);
  56. if(is_null($bridge)) {
  57. return false;
  58. }
  59. $ret = $bridge->query($parmas);
  60. return $ret;
  61. }
  62. public function balance($mch_name,$parmas)
  63. {
  64. $bridge = $this->find($mch_name);
  65. if(is_null($bridge)) {
  66. return false;
  67. }
  68. $ret = $bridge->balance($parmas);
  69. return $ret;
  70. }
  71. private function find($name)
  72. {
  73. try
  74. {
  75. if(array_key_exists($name,$this->mMerchants)) {
  76. return $this->mMerchants[$name];
  77. }
  78. $class = "rbridge\\{$name}\\Bridge";
  79. if(class_exists($class,false)) {
  80. $merchant = new $class();
  81. $this->mMerchants[$name] = $merchant;
  82. return $merchant;
  83. } else {
  84. $error = "Error: class {$class} isn't exists!";
  85. throw new Exception($error);
  86. }
  87. }
  88. catch (Exception $ex)
  89. {
  90. Log::record($ex->getMessage(),Log::ERR);
  91. }
  92. return null;
  93. }
  94. }