在 PHP 中实现带 WSDL 的 SOAP

  1. 用 composer 安装生成 WSDL 所需的库
    composer require piotrooo/wsdl-creator
    
  2. 实现用于外部访问的入口文件,代码示例请参考(其中方法名和参数中出现的 Notify 对应一个类名,该类的方法将成为可以通过 SOAP 调用的外部接口):
    <?php
    use WSDL\DocumentLiteralWrapper;
    use WSDL\WSDLCreator;
    use WSDL\XML\Styles\DocumentLiteralWrapped;
    class Api
    {
        public static function soapNotify()
        {
            $host = $_SERVER['HTTP_HOST'];
            $soapuri = "http://{$host}/Api/soapNotify";
            if (isset($_GET['wsdl'])) {
                $wsdl = new WSDLCreator('Notify', $soapuri);
                $wsdl-&gt;renderWSDL();
                exit;
            }
            $server = new SoapServer(null, [
                'uri' =&gt; $soapuri
            ]);
            $server-&gt;setClass('Notify');
            $server-&gt;handle();
        }
    }
    
  3. 实现包含接口功能逻辑的类文件,代码示例请参考(其中方法的注释相当重要,是 wsdl-creator 正确生成 WSDL 的依据,必须严格按照格式进行注释):
    <?php
    class Notify
    {
        /**
         * @desc sendText 向患者的微信发送文本信息
         * @param string $toUser 发给哪个用户
         * @param string $content 发送的内容
         * @return string $result
         */
        public function sendText($toUser, $content)
        {
            if (!$toUser || !$content) {
                return E::INVALID;
            }
            $user = G::xpdo()->row("SELECT * FROM `users` WHERE `patientid` = ?", [$toUser]);
            if (!$user) {
                return E::NODATA;
            }
            $api = G::xpdo()->row("SELECT * FROM `api` WHERE `token` = ?", [$user['token']]);
            $weixin = new Weixin($api['appid'], $api['appsecret']);
            $weixin->sendText($user['openid'], $content);
            return 0;
        }
    }
    
  4. 使用 SoapUI 软件对接口进行调试
  5. 编制相应的接口调用说明文档

参考资料:

更多

Quasar中的前端代码转译

使用 Quasar 时,如何完成浏览器兼容性的配置。 制定兼容范围 在进行实际配置前,首先必须确定要支持浏览器的版本,而确定浏览器版本则需要先明确业务对象的情况。 为什么不干脆把标准定的越高越好呢?比如支持100%的用户。这是因为支持率越高,可用的新语法越少,意味着更多的转译代码和 polyfill,这会带来额外的代码量,从而导致下载数据量增加,以及运行速度变慢的问题,为了0.01%影响99.99%用户的体验并增加他们的流量开销,是否合适呢?这就需要根据实际业务进行取舍和平衡。 比如我们的业务对象既有企业用户,也有公众用户,企业用户主要使用钉钉,并可对其PC浏览器进行要求,而公众用户主要使用微信。 确定常用浏览器版本 PC浏览器可以指定,那么对浏览器版本就不需要过多考虑,但是部分客户还有XP系统,那么也就确定了 Chrome 浏览内核的版本不可以超过 49; 微信用户可能在手机登录,也可能在PC登录,而PC中的微信内置是QQ浏览器9,其内核版本是 Chrome 53; 电脑端的钉钉内置浏览器已经是 Chrome 91; 手机端的话考虑到安卓手机使

By 熊立丁
浙ICP备15043004号-1