PLUGIN_EXITSIGNAL_RETURN怎么用才对?

用户 server 8月前 488

foreach ($GLOBALS['hooks']['Filter_Plugin_Category_Call'] as $fpname => &$fpsignal) {
   $fpreturn = $fpname($this, $method, $args);
   if ($fpsignal == PLUGIN_EXITSIGNAL_RETURN) {
        $fpsignal = PLUGIN_EXITSIGNAL_NONE;

         return $fpreturn;
   }
}
小弟刚才其它程序转过来准备开发zblog。在使用接口时遇到一点问题。我想在挂上这个接口Filter_Plugin_Category_Call
某些情况下我需要中断代码,需要return出接口。又有些情况下我不需要中断。
麻烦大伙出招。
我在添加接口的时候这样
Add_Filter_Plugin('Filter_Plugin_Category_Call','demo_cate',PLUGIN_EXITSIGNAL_RETURN);
然后我的接口是中断了,但是其它系统在调用这个接口的时候也中断了。
虽然其它代码没加中断代码,但执行到这里也中断了
最新回复 (11)
全部楼主
  • 超级版主 am88 8月前 0
    引用 2
    请问小弟你想做什么

    如果我没有二次回复,如果你需要更多方案,进群找我
    发帖必读https://bbs.zblogcn.com/thread-93163-1-1.html

  • 用户 server 8月前 0
    引用 3
    am88 发表于 2018-12-19 23:31
    请问小弟你想做什么


    不好意思大哥,发帖的时候代码搞错了。
    我是想用
    Filter_Plugin_Category_Get
    这个接口,
    比如调用分类的时候,
    这个是分类对象。$category
    我代码需要
    $category->exp
    $category->exps
    $category->aaa
    $category->bbb
    $category->.....
    然后根据其它的表的数据,来返回不同的结果。
    我挂上接口后,接口不加PLUGIN_EXITSIGNAL_RETURN的话,直接报错属性不存在。
    我要加上呢,这个属性不报错了,其它正常的属性都报错,什么ID,Name这些,都爆不存在的属性😓
  • 超级版主 沉冰浮水 8月前 0
    引用 4
    youfun (){
    
    if (3=3)
    $GLOBALS['hooks']['Filter_Plugin_Category_Call']["youfun "] = PLUGIN_EXITSIGNAL_RETURN
    
    }

    沉冰浮水.tk  ←_←我大概率能够解答你所实际面临的问题,然而问题往往是你提出的问题根本无从回答

  • 用户 server 8月前 0
    引用 5
    沉冰浮水 发表于 2018-12-20 10:01


    感谢帮助,但行不通
  • 用户 server 8月前 0
    引用 6
    本帖最后由 server 于 2018-12-20 11:15 编辑

    Add_Filter_Plugin('Filter_Plugin_Category_Get','demo_category');
    
    function demo_category(&$m,$name){
        switch($name){
            case 'aaa':
                $GLOBALS['hooks']['Filter_Plugin_Category_Call']["demo_category"] = PLUGIN_EXITSIGNAL_RETURN;
                return '...1';
            break;
            case 'bbb':
                $GLOBALS['hooks']['Filter_Plugin_Category_Call']["demo_category"] = PLUGIN_EXITSIGNAL_RETURN;
                return '...2';
            break;
            case 'ccc':
                $GLOBALS['hooks']['Filter_Plugin_Category_Call']["demo_category"] = PLUGIN_EXITSIGNAL_RETURN;
                return '...3';
            break;
        }
    }
    在执行的时候,
    foreach ($GLOBALS['hooks']['Filter_Plugin_Category_Call'] as $fpname => &$fpsignal)
    $fpsignal已经就是NONE了吧,即便赋值PLUGIN_EXITSIGNAL_RETURN也不起作用啊,这时候仍然会报错不存在的属性。只有再次调用这个接口的时候,这个PLUGIN_EXITSIGNAL_RETURN才会起作用。
    当再次跑到这个接口的时候,如果是系统在调用ID和Name之类的话,又要return了,又报属性不存在了




  • 超级版主 沉冰浮水 8月前 0
    引用 7
    这里使用的是引用传递。。可以在循环内把$fpsignal打印出来看看。。

    沉冰浮水.tk  ←_←我大概率能够解答你所实际面临的问题,然而问题往往是你提出的问题根本无从回答

  • 超级版主 am88 8月前 0
    引用 8
    不要跟我说代码,就说,你想做什么,实现什么?

    如果我没有二次回复,如果你需要更多方案,进群找我
    发帖必读https://bbs.zblogcn.com/thread-93163-1-1.html

  • 超级版主 zhouzishu 8月前 0
    引用 9
    am88 发表于 2018-12-20 17:08
    不要跟我说代码,就说,你想做什么,实现什么?


    他想实现什么代码能看出来啊……

    就是php的对象魔术……

    有任何关于我插件的问题联系我 QQ:2693558149(注明zblog)。(免费插件仅接受bug和建议,一概不提供因自身问题引起的问题和代码修改)
    无关的咨询类问题一概不理,由于时间有限不接任何定制单子。

  • 超级版主 zhouzishu 8月前 0
    引用 10
    server 发表于 2018-12-20 11:13
    在执行的时候,
    foreach ($GLOBALS['hooks']['Filter_Plugin_Category_Call'] as $fpname => &$fpsignal)
    $ ...


    你明明挂的是 Filter_Plugin_Category_Get 接口,为啥 $GLOBALS['hooks']['Filter_Plugin_Category_Call']["demo_category"] = PLUGIN_EXITSIGNAL_RETURN; 这里用的是call

    有任何关于我插件的问题联系我 QQ:2693558149(注明zblog)。(免费插件仅接受bug和建议,一概不提供因自身问题引起的问题和代码修改)
    无关的咨询类问题一概不理,由于时间有限不接任何定制单子。

  • 用户 server 8月前 0
    引用 11
    zhouzishu 发表于 2018-12-21 12:36
    你明明挂的是 Filter_Plugin_Category_Get 接口,为啥 $GLOBALS['hooks']['Filter_Plugin_Category_Call' ...


    发帖的时候复制错了,实际代码是正确的
  • 用户 server 8月前 0
    引用 12
    问题解决了,感谢各位的帮助。
    是我function里面的同对象属性再次调用引起的。
    赋值return的时候,一定要在最后,之后不能有调用此对象的代码
    • ZBlogger技术交流中心
      13
          
返回
发新帖