ZBlogger技术交流中心

 找回密码
 注册

QQ登录

只需一步,快速开始

Z-BlogPHP 最新开发动态 下载最新版:Z-BlogPHP 1.5 Zero Wordpress转换 - Emlog转换 - 找回密码

Z-BlogASP 最新开发动态 下载最新版:Z-Blog 2.2 Prism Build 140101 转换到Z-BlogPHP - 1.8升级指南 - 找回密码

DBS官方主机/域名/VPS 推荐:Z-BlogPHP主机-Z-BlogASP主机 联系值班客服(每天9:00-21:30)

搜索
【聚划算】宅男最新神器!你懂的!环球外贸论坛
查看: 179|回复: 11

PLUGIN_EXITSIGNAL_RETURN怎么用才对?

[复制链接]
 楼主| 发表于 2018-12-19 21:54:02 | 显示全部楼层 |阅读模式
  1. foreach ($GLOBALS['hooks']['Filter_Plugin_Category_Call'] as $fpname => &$fpsignal) {
  2.    $fpreturn = $fpname($this, $method, $args);
  3.    if ($fpsignal == PLUGIN_EXITSIGNAL_RETURN) {
  4.         $fpsignal = PLUGIN_EXITSIGNAL_NONE;

  5.          return $fpreturn;
  6.    }
  7. }
复制代码
小弟刚才其它程序转过来准备开发zblog。在使用接口时遇到一点问题。我想在挂上这个接口Filter_Plugin_Category_Call
某些情况下我需要中断代码,需要return出接口。又有些情况下我不需要中断。
麻烦大伙出招。
我在添加接口的时候这样
Add_Filter_Plugin('Filter_Plugin_Category_Call','demo_cate',PLUGIN_EXITSIGNAL_RETURN);
然后我的接口是中断了,但是其它系统在调用这个接口的时候也中断了。
虽然其它代码没加中断代码,但执行到这里也中断了
回复

使用道具 举报

发表于 2018-12-19 23:31:14 | 显示全部楼层
请问小弟你想做什么
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 08:40:22 | 显示全部楼层
am88 发表于 2018-12-19 23:31
请问小弟你想做什么

不好意思大哥,发帖的时候代码搞错了。
我是想用
  1. Filter_Plugin_Category_Get
复制代码
这个接口,
比如调用分类的时候,
这个是分类对象。$category
我代码需要
$category->exp
$category->exps
$category->aaa
$category->bbb
$category->.....
然后根据其它的表的数据,来返回不同的结果。
我挂上接口后,接口不加PLUGIN_EXITSIGNAL_RETURN的话,直接报错属性不存在。
我要加上呢,这个属性不报错了,其它正常的属性都报错,什么ID,Name这些,都爆不存在的属性
回复 支持 反对

使用道具 举报

发表于 2018-12-20 10:01:38 | 显示全部楼层
  1. youfun (){

  2. if (3=3)
  3. $GLOBALS['hooks']['Filter_Plugin_Category_Call']["youfun "] = PLUGIN_EXITSIGNAL_RETURN

  4. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 11:07:42 | 显示全部楼层

感谢帮助,但行不通
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 11:13:50 | 显示全部楼层
本帖最后由 server 于 2018-12-20 11:15 编辑
  1. Add_Filter_Plugin('Filter_Plugin_Category_Get','demo_category');

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




回复 支持 反对

使用道具 举报

发表于 2018-12-20 15:44:21 | 显示全部楼层
这里使用的是引用传递。。可以在循环内把$fpsignal打印出来看看。。
回复 支持 反对

使用道具 举报

发表于 2018-12-20 17:08:47 | 显示全部楼层
不要跟我说代码,就说,你想做什么,实现什么?
回复 支持 反对

使用道具 举报

发表于 2018-12-21 12:35:20 | 显示全部楼层
am88 发表于 2018-12-20 17:08
不要跟我说代码,就说,你想做什么,实现什么?

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

就是php的对象魔术……
回复 支持 反对

使用道具 举报

发表于 2018-12-21 12:36:12 | 显示全部楼层
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
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-21 18:25:18 | 显示全部楼层
zhouzishu 发表于 2018-12-21 12:36
你明明挂的是 Filter_Plugin_Category_Get 接口,为啥 $GLOBALS['hooks']['Filter_Plugin_Category_Call' ...

发帖的时候复制错了,实际代码是正确的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-22 12:36:39 | 显示全部楼层
问题解决了,感谢各位的帮助。
是我function里面的同对象属性再次调用引起的。
赋值return的时候,一定要在最后,之后不能有调用此对象的代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|ZBlogger技术交流中心 ( 鄂ICP备11007414号 鄂公网安备 42060602000101号 )

GMT+8, 2019-3-27 08:28 , Processed in 0.017243 second(s), 7 queries , APCu On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表