最近工作需要对 Discuz 做二次开发,本着最小化改动方便以后升级的原则,我引入了 WordPress 的 Hook 机制(即 Plugin API)来降低二次开发代码与 Discuz 原生代码的耦合度。
WordPress 内部提供了许多 Hook(钩子),以便插件可以将相应的 action 或 filter 挂接上去接管或改进 WordPress 的默认处理来达到自己期望的目的,在处理完毕后将控制权重新交给 WordPress。而我们所要做的就是将这种机制移植到 Discuz 中,所幸的是,WordPress 的 Hook 机制并没有过多地依赖于它的其它核心程序,所以基本不需要做多少修改就可以拿来使用。
Continue reading…
为朋友写了个PHP版本的 socket 程序,在自己的机器环境(WIN2K3, IIS6, PHP4.4.6,ISAPI 模式)下测试一切 OK,到了实际环境却提示 Call to undefined function socket_create()
,初步判断应该 php_socket.dll 未加载的缘故,echo phpinfo 也没有 socket 相关信息。
确认在 php.ini 文件里已经将;extension=php_sockets.dll
这一行的分号去掉了,可 socket 扩展死活不加载。除了 PHP 版本有些差别(实际环境是4.4.9版本),其它设置都一样,正想将 PHP 降到 4.4.6 版本,却突然出现 Service Unavailable 提示,难不成要重装IIS?
不甘心,于是 google 解决方案。参照 Tmouse·方枪枪 的做法:
打开IIS管理器 - 网站 - 右键属性 - 服务 - 勾上”以IIS5.0隔离模式运行www服务”
IIS 的 Service Unavailable 故障消失,更为有意思的是 php_socket 扩展可以正常加载了 -_-! 要不是情况特殊,以后打死我也不用 IIS 跑 PHP 了。
在装上 K2 RC4 主题后,发现如果用 IE 访问 WP 后台无法保存 K2 的设置选项,点击 Save 按钮后毫无反应,Firefox、Opera、Safari则正常。看了看源代码,K2 是这样定义这个按钮的:
< ?php echo attribute_escape(__('Save','k2_domain'));?>
之前很少使用过 <button> 标签,所以开始还以为 K2 绑定了按钮事件不支持 IE,不过浏览了一通代码也没找到,才意识到问题可能出在标签的未指定 type 属性上了,于是加上 type=”submit”,问题解决。
又特意找了找相关资料,W3C 对 button 标签的 type 属性定义是:
submit: Creates a submit button. This is the default value .
reset: Creates a reset button.
button: Creates a push button.
而 MSDN 中则如此解释:
button: Default . Creates a Command button.
reset: Creates a Reset button. If the button is in a form,
it resets the fields in the form to their initial values.
submit: Creates a Submit button. If the button is in a form,
it submits the form.
原来如此。fuck IE!