<?php namespace App\Http\Manager; use App\Http\InterfaceClass\ISdkFactory; use App\Models\ChannelGame; use Exception; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\App; use RuntimeException; class SdkManager { /** * 登录 * @param $verInfo * @param $gameInfo * @param $params * @return array */ public function login( $verInfo, $gameInfo, $params): array { $channelClass = ucfirst($verInfo->ver_class); try { /** @var ISdkFactory $sdkObj */ $sdkFileClass = "App\\Http\\InterfaceClass\\SdkImpl\\{$channelClass}"; $sdkObj = new $sdkFileClass; if (!$sdkObj instanceof ISdkFactory) { throw new RuntimeException($channelClass . '不是ISdkFactory子类!'); } } catch (Exception $e) { $msg = '创建' . $channelClass . '类失败!'; throw new RuntimeException($msg); } return $sdkObj->login($verInfo,$gameInfo, $params); } /** * 支付 * @param $verInfo * @param $gameInfo * @param $params * @return array */ public function pay($verInfo, $gameInfo, $params): array { $channelClass = ucfirst($verInfo->ver_class); try { /** @var ISdkFactory $sdkObj */ $sdkFileClass = "App\\Http\\InterfaceClass\\SdkImpl\\{$channelClass}"; $sdkObj = new $sdkFileClass; if (!$sdkObj instanceof ISdkFactory) { throw new RuntimeException($channelClass . '不是ISdkFactory子类!'); } } catch (Exception $e) { $msg = '创建' . $channelClass . '类失败!'; throw new RuntimeException($msg); } return $sdkObj->pay($verInfo,$gameInfo, $params); } }