• 微信开发学习日记(八):7步看懂weiphp插件机制,核心目标是响应微信请求


    又经过了几个小时的梳理、回顾,截至目前,终于对weiphp这个框架的机制搞明白了些。想要完全明白,自然还需要大把的时间。

       
    第1步:
       配置微信公众号,http://weiphp.jiutianniao.com/ ... .html 

      从上面这个配置可以看出,微信请求呗weiphp的入口文件index.php接收了,可能会被/home/weixin/index/这个action响应。

    第2步:
       index.php入口文件,校验了是否是微信请求。 
      /**
     * 微信接入验证
     * 在入口进行验证而不是放到框架里验证,主要是解决验证URL超时的问题
     */
    if (! empty ( $_GET ['echostr'] ) && ! empty ( $_GET ["signature"] ) && ! empty ( $_GET ["nonce"] )) {
    }

    第3步:
      入口已经验证过了,即不是“第一次”  ,请求会被分发到home模块的WeixinController的index这个方法。

    第4步:
      在index方法中, 首先获得的就是token、openid、粉丝等信息。
      最关键的处理是,回复数据。
      // 回复数据
    $this->reply ( $data, $weixin );

    第5步:
       在reply函数中, 就是寻找合适的插件进行消息响应。

       涉及到的问题有,安装了哪些插件、哪些启用了、哪些有权限。
      
        准备了可用插件之后,  根据消息的类型,事件、地理位置、订阅,寻找合适的插件,比如如果有location事件,插件就执行对应的回调方法。

        还有的情况是,消息。

       根据关键字,回复消息。

       这个时候,问题就变成了 插件定位问题。

       a.通过插件标识名、插件名或者自定义关键词来定位处理的插件
       b.通过精准关键词来定位处理的插件 token=0是插件安装时初始化的模糊关键词,所有公众号都可以用
       c.通过模糊关键词来定位处理的插件
       d.最终也无法定位到插件,终止操作 

        疑问:通过代码,发现location等事件,有很多插件都会处理这个事件。而消息,只会找到一个插件。是这么个情况么?

     第6步:
        插件的weixinmodel。

        /**
     * Vote模型
     */
    class WeixinAddonModel extends WeixinModel {
    function reply($dataArr, $keywordArr = array()) {
    }

      微信插件,基本都会有个WeixinModel类,如果有必要,会响应微信的请求。

     第7步:
        URL响应问题。

        这个地方一直有疑惑,如果所谓的插件机制,就是根据用户发送到关键词,让不同的类-插件去响应,这也太没有“含金量” 了吧。难道微信的核心玩法就是这个东东么?

       class VoteController extends AddonsController {
       }

       每个插件,可能会有Controller,响应URL请求。比如,后台管理和前台管理(不会直接和微信进行交互) ,会有一些管理方法,设置信息之类的。

      另外,有些在weixinModel的reply 方法中,可能包含了插件内部定义的url,这个感觉才真的很有价值。

      总结:weiphp这个微信框架,简要总结起来就4点。
    1.weiphp基于Thinkphp和Onethink。疑问的是,weiphp有没有对Thinkphp和Onethink的核心代码有改动。如果有改动的话,更多的应该是对Onethink改动。
    2.weiphp的核心入口,就是index.php和/home/weixin/index方法,验证和响应微信请求。
    3. 插件机制,感觉就是根据关键字找插件,让插件响应请求。
    4.后台管理系统、用户端的前端管理、插件机制,都是为了微信框架的核心目标“响应微信请求”。
      这才是最最关键的地方呀。

      武汉九天鸟-武汉领先的移动互联网系统开发商
      九天鸟问答-http://ask.jiutianniao.com
      九天鸟博客-http://blog.jiutianniao.com
      九天鸟官网-建设中,敬请期待
      2015年4月17日 
  • 相关阅读:
    结构体数组
    怎样在Linux下通过ldapsearch查询活动文件夹的内容
    Phalcon之 表单(Forms)
    Java模式(适配器模式)
    人类智商一般在多少左右?爱因斯坦的智商是多少?
    SQL中declare申明变量
    apache2.2 虚拟主机配置
    项目实施阶段该做好哪些方面的工作
    HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth之全然具体解释
    ExtJs自学教程(1):一切从API開始
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462784.html
Copyright © 2020-2023  润新知