123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- namespace rbridge;
- require_once(BASE_HELPER_PATH . '/refill_proxy.php');
- require_once(BASE_HELPER_PATH . '/rbridge/IBridge.php');
- require_once(BASE_HELPER_PATH . '/rbridge/wsd/Bridge.php');
- use Exception;
- use Log;
- class RBridgeFactory
- {
- private static $stInstance = null;
- public static function instance()
- {
- if (self::$stInstance == null) {
- self::$stInstance = new RBridgeFactory();
- }
- return self::$stInstance;
- }
- private $mMerchants;
- private function __construct()
- {
- $this->mMerchants = [];
- }
- public function add($mch_name,$parmas)
- {
- $bridge = $this->find($mch_name);
- if(is_null($bridge)) {
- return false;
- }
- $ret = $bridge->add($parmas);
- return $ret;
- }
- public function notify($mch_name,$parmas)
- {
- $bridge = $this->find($mch_name);
- if(is_null($bridge)) {
- return false;
- }
- $ret = $bridge->notify($parmas);
- if($ret) {
- return "SUCCESS";
- }
- else {
- return "ERROR";
- }
- }
- private function find($name)
- {
- try
- {
- if(array_key_exists($name,$this->mMerchants)) {
- return $this->mMerchants[$name];
- }
- $class = "rbridge\\{$name}\\Bridge";
- if(class_exists($class,false)) {
- $merchant = new $class();
- $this->mMerchants[$name] = $merchant;
- return $merchant;
- } else {
- $error = "Error: class {$class} isn't exists!";
- throw new Exception($error);
- }
- }
- catch (Exception $ex)
- {
- Log::record($ex->getMessage(),Log::ERR);
- }
- return null;
- }
- }
|