上一篇:双启动机器误删Linux后系统恢复方法 - 下一篇:yum设置方法
版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2006/03/31/zephyr/以及本声明。
这一阵子使用了基于Ajax的PHP-MVC框架Zephyr。官方主页为 http://zephyr-php.sourceforge.net/。
该框架的Ajax通信机制使用第三方软件 cpaint (http://cpaint.booleansystems.com/)实现,而视图则使用PHP的官方模板 smarty (http://smarty.php.net/)实现。
基本的开发思想很简单:利用javascript通过Ajax来调用远程的php代码,然后自动地将返回结果显示在某个指定的div元素中。实现了以下的目标:
1. 业务逻辑和画面显示的分离。
业务逻辑完全在php代码中实现,而画面显示则完全由smarty提供的模板语言写成。
2. 完全封装了ajax操作。
利用cpaint完全封装了ajax操作,开发时完全不必考虑ajax的复杂性,而可以像开发windows程序那样进行ajax程序的开发。
3. 解决了动态装入js代码的执行问题。
Ajax应用中有一个很重要的问题,就是通过Ajax动态读入的javascript代码不会被自动执行。而zephyr解决了这个问题。
不过,我也同时发现zephyr的一个缺点。
1. 同时读取多个div的内容会引起冲突。
如果试图同时读取画面上多个div,则会导致显示混乱。这是因为,zephyr使用一个全局变量来保存div的名称,因此同时读取多个div时,仅有最后一个div的名字被保存,导致本应读入到各个div中的内容全部都被装入最后一个div。为解决此问题,应当在zephyr的核心javascript/function.js中增加信号量互斥的操作:仅有得到信号量的更新操作才允许进行,如果获取信号量失败,则等待一定时间之后再次尝试,直到成功为止。这样就能够保证各个更新操作依次执行,而不会引起冲突。
2008-08-26 12:59
@焦连鑫 这个已经是很早以前的文章了,代码早就没有了,抱歉。zephyr毕竟是小众的东西,用的人应该不多吧。推荐使用symphony和cakephp。

2008-08-26 11:22
不能 楼主 能不能 把 解决 1. 同时读取多个div的内容会引起冲突。 这个问题的代码 发一下。
谢谢。
对了,顺便问一下, 现在用这个框架的人多不多?