浏览模式: 标准 | 列表

PHP5 中类默认支持 overload(重载)功能,通过这个功能可以实现自定义属性和 overload 方法。在这篇文章里主要谈的是关于 overload 方法的问题。

这里的 overload 其实跟 C++ 中的 overload 不太一样。在这里你可以通过定一个 __call 方法,来处理用户调用的在类中没有定义的方法。用户调用的方法名被作为第一个参数传给 __call 方法,而用户调用该方法的参数被作为一个数组传给 __call 方法的第二个参数。

PHP4 默认不支持 overload 对象,必须用 overload 方法来明确指定那个类需要 overload 。

PHP5 和 PHP4 的 overload __call 有些不一致的地方。PHP5 中 __call 方法有且只有 2 个参数,即 function_name 和 arguments,返回值在 __call 中用 return 语句返回。而在 PHP4 中,__call 方法有第三个可选参数,而且这个参数是引用参数,它代表返回值,如果需要返回值,只需要在 __call 方法中给第三个参数赋值即可。另外 PHP4 中的 __call 方法中,return 语句如果返回真,表示用户调用方法成功,否则表示用户调用方法失败,即用户调用的方法不存在。

PHP5 和 PHP4 的 overload __call 另外一个区别是,PHP5 中用户调用的方法名传给 __call 方法时,是有大小写区分的,而 PHP4 中用户调用的方法名传给 __call 方法时,方法名会全部转化为小写。

不管是 PHP5 还是 PHP4,overload __call 产生的虚拟方法,都不支持参数的引用传递。还有一个可能没有多少人注意的问题。官方手册和官方手册的用户注释中也没有提到这个问题。那就是 PHP4 在 overload __call 以后,该类中其它的方法在引用传递时,将不再符合手册中的描述。

» 阅读全文

以前写 JavaScript 程序时,事件都是采用 object.event = handler; 的方式初始化。这种方式对于 Internet Explorer、Mozilla/Firefox 和 Opera 来说很通用。但是有一个问题就是,这种方式只能一个事件对应一个事件处理过程。如果希望一个事件可以依次执行多个处理过程就不好用了。

» 阅读全文

1月
04

白白丢了一天的数据

真郁闷,今天早上我在调整后台参数时,不知怎么回事,突然网站坏掉了。后台无法进入,前台显示了一个警告错误。因为是调整 options 造成的,所以我以为是 options 那个表让我给破坏了。所以把 options 表恢复到昨天的数据,发现还是不行,于是一狠心,把整个数据库恢复到昨天早上的数据。于是昨天一天和今天早上的数据全丢了。如果这样做好了也值得啊!可是偏偏是一点作用都没起。更加郁闷。突然想到 WordPress 2.0 加了缓存功能,难道是缓存的数据坏掉了?于是找到缓存目录,统统删掉,然后又执行了一次 upgrade。终于好了。真郁闷,要是早知道是缓存的问题,我就不恢复数据库了,白白丢了一天的数据。:( 不过吃一堑,长一智,下次如果再遇到这种问题,就不会傻乎乎的再把数据搞掉了。其他的朋友如果遇到这种问题,一定要先看看是不是缓存的问题,千万不要向我这么傻,乱搞数据库啊!

» 阅读全文

以前就有人说过,我的那些插件都不能在后台的编辑器的 quicktags 按钮中出现,编辑的时候要自己敲入那些标签,很麻烦,希望我的插件能够提供在后台编辑器上显示 quicktags 按钮的功能,这个功能要用插件实现不太容易,反正我没找到合适的方法,而且现在 wordpress 的那个文档网站我这里上不去,因此编写插件时很麻烦。其实要增加那些标签不一定非要在插件里提供这个功能,自己修改一下 wp-includes\js\quicktags.js 文件就可以实现了。增加一个标签按钮只需要几行代码。

» 阅读全文