thinkphp 之 行为扩展

行为扩展,想要在行为中添加某种独立的功能,不必引用,可以直接使用行为扩展的功能
比如在每个行为中添加角色判断的功能,只需增加角色判断的行为,按照tp的规范添加到执行的位置就可以了

创建行为文件 在项目/Lib/Behavior/目录中 或 系统的行为扩展目录Extend/Behavior/ 自动加载
命名:TestBehavior.class.php
内容格式:
class TestBehavior extends Behavior{
    //行为定义参数    可以没有这个属性
    protected $options=array(
    
        'TEST'=>false,    //这里定义的TEST 相当与在config.php文件中 添加了此条作为自定义默认配置,可以在config.php文件中重新定义 并可在C方法中使用,
        //同样的其他配置继续写入
    );
    
    //扩展执行入口
    public function run(&$p)    //引用参数必须有,否则报错 用于返回值
    {
        if(C('TEST')){    //配置文件中开启后执行
            $this->ex_();
        }else{
            //代码段
        }
    }

    public function ex_()
    {
        //代码段
    }
    
}

扩展是使用

一,标签中使用
    在项目配置文件目录 建立tag.php文件
    内容格式:
    return array(
        '标签位'=>'行为名',    //比如TestBehavior 填写 'test'
    );

    标签位可以填写两种
        1,系统定义的标签位
            app_init    应用初始化标签位
            path_info    PATH_INFO检测标签位
            route_check    路由检测标签位
            app_begin    应用开始标签位
            action_name    操作方法名标签位
            action_begin    控制器开始标签位
            view_begin    视图输出开始标签位
            view_template    视图模板解析标签位
            view_parse    视图解析标签位
            view_filter    视图输出过滤标签位
            view_end    视图输出结束标签位
            action_end    控制器结束标签位
            app_end    应用结束标签位

        2,手动放置的标签(在行为中)
            tag('标签位');
            带参数:tag('标签位',变量名); *因为是函数参数是引用,所以必须使用变量名,之后输出变量名即可

    *如果要完全替换系统行为,格式为:
            return array(
                'app_end'=>array('Test','_overlay'=>1), //注意: _overlay 参数
            );

二 函数方式:add_tag_behavior('app_end','Test');

三 Action中直接使用   B('行为类名'); 也可带参数B('行为类名',变量);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1,SDK简介 本SDK是基于ThinkPHP开发类库扩展,因此只能在ThinkPHP平台下使用(ThinkPHP版本要求2.0以上)。DEMO中用到了控制器分层,因此运行DEMO需使用ThinkPHP3.1.2版本。 2,目前支持的平台 目前可用登录平台为:腾讯QQ,腾讯微博,新浪微博,网易微博,人人网,360,豆瓣,Github,Google,MSN,点点,百度,开心网,搜狐。 3,包含的文件 ThinkSDK/ThinkOauth.class.php SDK基类,主要用于Oauth的认证,所有平台的SDK均需要继承此类 ThinkSDK/sdk/DiandianSDK.class.php (点点SDK) ThinkSDK/sdk/DoubanSDK.class.php (豆瓣SDK) ThinkSDK/sdk/GithubSDK.class.php (Github SDK) ThinkSDK/sdk/GoogleSDK.class.php (Google SDK) ThinkSDK/sdk/MsnSDK.class.php (MSN SDK) ThinkSDK/sdk/QqSDK.class.php (腾讯QQ SDK) ThinkSDK/sdk/RenrenSDK.class.php (人人网SDK) ThinkSDK/sdk/SinaSDK.class.php (新浪微博SDK) ThinkSDK/sdk/T163SDK.class.php (网易微博SDK) ThinkSDK/sdk/TencentSDK.class.php (腾讯微博SDK) ThinkSDK/sdk/X360SDK.class.php (360 SDK) ThinkSDK/sdk/BaiduSDK.class.php (百度SDK) ThinkSDK/sdk/KaixinSDK.class.php (开心网SDK) ThinkSDK/sdk/SohuSDK.class.php (搜狐SDK) 4,配置格式 SDK的配置格式如下(可参考DEMO中的配置) //将一下(TYPE)换成你对应的SDK类型 'THINK_SDK_(TYPE)' => array( 'APP_KEY' => '', //应用注册成功后分配的 APP ID 'APP_SECRET' => '', //应用注册成功后分配的KEY 'CALLBACK' => '', //注册应用填写的callback ) 5,接入登录方法 添加ThinkPHP扩展,将整个ThinkSDK目录放入到ThinkPHP扩展目录下~Extend/Library/ORG/~。 添加SDK配置,按以上配置格式在项目配置中添加对应的SDK配置。(可参考DEMO中的配置文件) 跳转到授权页面,导入SDK基类import("ORG.ThinkSDK.ThinkOauth"),获取SDK实例$sdk=ThinkOauth::getInstance($type),跳转到授权页面redirect($sdk->getRequestCodeURL())。(可参考DEMO中的Index/login方法) 获取access_token,在授权成功的回调页面中,调用$sdk->getAccessToken($code, $extend)方法来获取access_token。(可参考DEMO中的Index/callback方法) 6,调用API方法 成功获取到access_token之后就可以调用相应平台的API了,调用方法比较简单,只需要调用$sdk->call($api, $param, $method)方法就可以了,其中:$api为接口名称,$param为接口参数(格式:name1=value1&name2=value2), $method为请求方法(GET或POST)。 例如: import("ORG.ThinkSDK.ThinkOauth"); //导入SDK基类 $qq = ThinkOauth::getInstance('qq', $token); //实例化腾讯QQ开放平台对象 $token 参数为授权成功后获取到的 $token $data = $qq->call('user/get_user_info'); //调用接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值