本文来自lukin的博客。。。
Lukin,lazyCMS的作者,如果你用过,或许会知道。。。
以下是原文
我是从asp转向php的,asp里面提供了下面的方法
代码1:
ASP/Visual Basic代码
- on error remuse next
-
- on error goto 0
----------------------------------------------------华丽的分割线-------------------------------------------------
转向php之后,查了一些资料貌似php没有提供类似这样的语法
直接使用error_reporting(0);关闭所有错误是很不明智的。所以,考虑使用@来抑制错误的发生,但是往往不如意。
我使用的set_error_handler('myerror')监听了一个函数,直接写@抑制错误的发生那是办不到的,照样会跳到myerror函数里面进行处理,后来看WordPress的源码,发现她屏蔽错误的方法:
代码2:
PHP代码
- $error_reporting = error_reporting(0);
-
- error_reporting($error_reporting);
应用到我系统里面,发现此方法也不好用,照样会进入myerror函数进行错误处理。
继续狂翻php手册,仔细查看set_error_handler这个函数的说明,然后查看评论(一般看手册上的评论还是很有收获的),评论上的一段代码引起了我的注意:
代码3:
PHP代码
-
- if (error_reporting() == 0) {
- return;
- }
细想了一下,把这段代码加入到myerror里面,果然ok了!原来使用@的时候,error_reporting()会返回0
这样可以利用@屏蔽某个函数里面发生的错误了,也可以使用【代码2】的方法来进行分段屏蔽错误了。
--EOF--
我一般是用Set_error_handler的。。还有我记得Error_reporting是可以返回当前设置的等级的。先取回当前的等级,然后设置为0,解决完后再设置回去。其实也是就第二种了。。不过我觉得lukin应该是用这种的,即:
PHP代码
- <?php
- $old = error_reporting();
- error_reporting(0);
-
- error_reporting($old);
使用ThinkSNS进行管理里。发现后台可以对用户组进行权限设定。于是乎,设定了一些菜单的权限。而且设定功能感觉也很强劲,因为可以设定子菜单是否可以访问呢。然而让人郁闷的却是,系统根本没有调用过这些权限。也就是说,你全部白设定了。
靠。太让人郁闷了。没完成你别放出来嘛。。。心都凉了。
顺便再说一个小BUG,UserSearch里如果要加入新的元素,你必须是这个元素为4个值的数组,即下标从0~4,如果ONLY第2个元素,你根本插不进数据库。【不多解释,如果增加内容到UserSearch里的人一定会注意到这个小BUG。。。。】
thinkSNS在最近的一段时间开发中,发现了不少BUG。。。没办法,谁让要用他的呢?
1、blog删除后跳转代码为redirect('index'),i应该大写,否则会报页面不存在的错误。
2、一些widget放在<inlucde footer>[<-左侧是伪代码]后面,导致有时候不能解析。好奇怪。。。有时候能够解析。
3、后台权限管理不正常,明明只选了一些简单的权限,但却多了一些不该有的权限。【准备改了,个人站点应该遇不到。毕竟就一个管理员】
4、如果后台把游客查看博客的权限打开,在前台反而会出错,因为博客页有评论,而读取评论列表时需要登录 。
其他一些未知BUG随着开发会越来越多。。有时候发现,thinksns作者是不是有点太粗心了?
不过。期望能够看到小游戏插件。黑黑,对分数排名很喜欢。
这是一个尝试,其实在我的域名下已经有很多这样的实验性的代码了。不过都没有一一公布而己。
当然页面还没有做,提供的接口也仅仅是FOR PHPRPC的。【不是不想用hprose,实在没钱】
慢慢来吧。准备找个漂亮的页面抠回来写文档。呵呵
随记而己
discuz的几乎所有程序都有一个:加入事件,那么,其他平台怎么获取这个事件呢?那就是uc_feed_get方法了。但 事实上,有很多人都没有注意过这个方法有第二个参数。
如果你直接去uc的uc_feed表查看,你会经常性的发现这个表是空的。而autoIndex却很大,这又是为什么呢?
于是打开uc_client方法,却发现这个函数有两个参数,第一个参数是一次获取的条数,第二个参数是Delete,默认值为true,也就是说,获取完多少条后,他都会自动删除。因此uc_feed表就几乎是永远空着了。
但问题也就在这里。我怎么知道是哪个系统获取了这些feed呢?A系统获取Feed后,B是不是也获取到了呢。又怎么处理的呢?没有仔细看代码。。。
文档中uc_feed_get只提供了一个参数limit,可以查看:http://www.ucapi.com/api/feed.htm
建议在开发的时候,先找一个uc_feed_get方法。自己写程序处理。否则,应该会出现a系统有Feed,B系统没有Feed的情况。【慎重,主要还是没有队列。。。或者推送机制,否则在有了feed后,同步向各个系统推送一下Feed呢?不就结束了?】
uchome的UC接口中有一个addfeed方法,理论上是应该在其他系统添加后往uc.php推送的。只是没有看到哪里有推送代码。。。难道是放在事件中?迷惘了。