RBridgeFactory.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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/wsd/Bridge.php');
  6. require_once(BASE_HELPER_PATH . '/rbridge/fulu/Bridge.php');
  7. require_once(BASE_HELPER_PATH . '/rbridge/fulu_ylyw/Bridge.php');
  8. require_once(BASE_HELPER_PATH . '/rbridge/fulu_youjun/Bridge.php');
  9. use Exception;
  10. use Log;
  11. class RBridgeFactory
  12. {
  13. private static $stInstance = null;
  14. public static function instance()
  15. {
  16. if (self::$stInstance == null) {
  17. self::$stInstance = new RBridgeFactory();
  18. }
  19. return self::$stInstance;
  20. }
  21. private $mMerchants;
  22. private function __construct()
  23. {
  24. $this->mMerchants = [];
  25. }
  26. public function add($mch_name,$parmas)
  27. {
  28. $bridge = $this->find($mch_name);
  29. if(is_null($bridge)) {
  30. return false;
  31. }
  32. $ret = $bridge->add($parmas);
  33. return $ret;
  34. }
  35. public function notify($mch_name,$parmas)
  36. {
  37. $bridge = $this->find($mch_name);
  38. if(is_null($bridge)) {
  39. return false;
  40. }
  41. $ret = $bridge->notify($parmas);
  42. if($ret) {
  43. return "SUCCESS";
  44. }
  45. else {
  46. return "ERROR";
  47. }
  48. }
  49. private function find($name)
  50. {
  51. try
  52. {
  53. if(array_key_exists($name,$this->mMerchants)) {
  54. return $this->mMerchants[$name];
  55. }
  56. $class = "rbridge\\{$name}\\Bridge";
  57. if(class_exists($class,false)) {
  58. $merchant = new $class();
  59. $this->mMerchants[$name] = $merchant;
  60. return $merchant;
  61. } else {
  62. $error = "Error: class {$class} isn't exists!";
  63. throw new Exception($error);
  64. }
  65. }
  66. catch (Exception $ex)
  67. {
  68. Log::record($ex->getMessage(),Log::ERR);
  69. }
  70. return null;
  71. }
  72. }