RBridgeFactory.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace rbridge;
  3. require_once(BASE_HELPER_PATH . '/rbridge/IBridge.php');
  4. require_once(BASE_HELPER_PATH . '/rbridge/shr/Bridge.php');
  5. require_once(BASE_HELPER_PATH . '/refill_proxy.php');
  6. use Exception;
  7. use Log;
  8. class RBridgeFactory
  9. {
  10. private static $stInstance = null;
  11. public static function instance()
  12. {
  13. if (self::$stInstance == null) {
  14. self::$stInstance = new RBridgeFactory();
  15. }
  16. return self::$stInstance;
  17. }
  18. private $mMerchants;
  19. private function __construct()
  20. {
  21. $this->mMerchants = [];
  22. }
  23. public function add($mch_name,$parmas)
  24. {
  25. $bridge = $this->find($mch_name);
  26. if(is_null($bridge)) {
  27. return false;
  28. }
  29. $ret = $bridge->add($parmas);
  30. return $ret;
  31. }
  32. public function notify($mch_name,$parmas)
  33. {
  34. }
  35. private function find($name)
  36. {
  37. try
  38. {
  39. if(array_key_exists($name,$this->mMerchants)) {
  40. return $this->mMerchants[$name];
  41. }
  42. $class = "rbridge\\{$name}\\Bridge";
  43. if(class_exists($class,false)) {
  44. $merchant = new $class();
  45. $this->mMerchants[$name] = $merchant;
  46. return $merchant;
  47. } else {
  48. $error = "Error: class {$class} isn't exists!";
  49. throw new Exception($error);
  50. }
  51. }
  52. catch (Exception $ex)
  53. {
  54. Log::record($ex->getMessage(),Log::ERR);
  55. }
  56. return null;
  57. }
  58. }