yii2 web service plugin 使用及安装说明

来源:互联网 发布:mac无法解压zip 编辑:程序博客网 时间:2024/05/25 16:40

yii2 web service plugin 使用及安装说明(前面有一点英文后面都是中文)

=================

Installation

这里用的是这个插件的官方介绍,并且作了一些改变,请注意看细节,本编是中文编写,只是前面引用了一点官方的介绍文档
The preferred way to install this extension is through composer.

To install, either run

$ php composer.phar require conquer/services "*"

or add

"conquer/services": "*"

to the require section of your composer.json file.

Usage

namespace app\controllers;class SiteController extends \yii\web\Controller{    public function actions()    {        return [            'soap' => [                'class' => 'conquer\services\WebServiceAction',                'classMap' => [                    'MyClass' => 'app\controllers\MyClass'                ],            ],        ];    }    /**     * @param string $str     * @return mixed     * @soap     */    public function soapTest($str)    {        return $str;    }    /**      * 上面就是服务器的配置      * 为了方便,我就在一台机器上做测试了,演示我的demo      * 下面开始写访问者的代码了      */      public function actionIndex()    {    /**     * 首先, 需要new soapClient的对象,对象里面传服务器的 wsdl的url,     * 这个url 怎么生成的,在下面的文字说明里面有提到     * 其次,调用服务定义好的接口方法,由上面服务器的配置,我们可以知道     * 我定义的接口方法就是soapTest     * 然后,正常情况下,应该是运行了,但是如果由问题请注意我下面列出的问题,以及解决方案     */    $client=new SoapClient('http://www.qmerp.com/index.php?r=site%2Fsoap');    echo $client->soapTest('hello world');//        $result = $client->__getFunctions();//        var_dump($result);    }}

以上是我根据这个插件提供的使用指南

注意事项
- 首先,需要在actions里面,注册好一个这个插件提供的aciton方法,这个方法会搭建一个
webservice 服务,并且会生成一个wsdl url(这里我们可以知道这个url就是访问这个action的url, site/soap, 我的生成的地址为: http://www.qmerp.com/index.php?r=site%2Fsoap), 以及一个wsdl 的dom结构(这个结构是根据
相关的操作生成的,具体怎么生成,下面细讲)
- 其次,写一个接口方法,供访问者使用 我们这里写的接口方法是soapTest(str);在写这个接口方法需要特别注意
这个方法的注释,
- 第一个坑注释里面必须要由 @soap这个东西,如果没有,客户端是没有办法调用到这个接口方法的,会报一个
错误信息翻译过来就是:这个方法没有, 这个坑坑了我好几个小时,网上各种找文档都没有解决方案。
- 第二个坑就是:当你注释里面由这一段,但还是告诉你没有这个方法的时候,你的内心是崩溃的,但是当你看到这个文档时候
你就不用担心这个问题了, 请到php.ini里面 找到 ‘;opcache.save_comments=1’,把前面的分号去掉,这个操作可以
理解为,不要去掉程序里面的注释 , 现在你应该明白为啥加了注释还是没有效果了吗?
- 第三个坑是: 怎么传递参数,由的同学可能在传递参数这个环节出问题,传递参数的时候也要特别注意注释的写法,
正确的而写法格式应该是 ’ @param xxx(这里是参数类型,这个很重要)$str ‘, 因为中间没有这个参数类型的话,你也是没有办法
调用到这个接口方法的,最重要的是 @param 一定要有, 其次 还需要 xxx(这个字符串,这里面不能包含除了单字符以外的字符) 然后
接上你的参数就可以了
- 另外如果是什么包,库没有安装的,请自行百度或者google解决
- 如果还有遇到其他坑的,可以在下面留言交流

0 0