RBridgeFactory.php 2.0 KB

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