免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: axgle
打印 上一主题 下一主题

[心得] 我对事件驱动的理解 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-07-11 11:56 |只看该作者
原帖由 crazysoul 于 2006-7-11 11:29 发表



语法是固定的结构,当然不能随便改变,不然就是另一种语言了.
不过感觉你太拘泥于形式了.
JS的事件注册很灵活,有ONXX =eventHandle 的,也可以用:
targetObj.addEventListener('eventName',eventFunc,true) ...



关于php实现这个 function handle 方式的匿名函数可能还是需要研究一下php的原理~~

我的理解,不一定对,不过可以一起讨论一下~~

php中使用了两种方式来处理变量,对象和函数,一种是字典表,一种是资源~~~~资源掠过不说,这东西更多是被当作对象来用(其实也是个 handle,如“Object #123”)~~~那么一般来说函数是注册于字典表中以字符串的形式索引~~由于 function 本身的handle就是字符串,那也就没有js中的两种形式“字符串”和“function handle”~~

php现在还无法重载运算符,否则实现 onxx=xxxx 的形式也不会很困难~~看看后继版本是否能提供吧~~~

func_num_args() 只是一个实现的方式,我个人很少在大一些的系统中使用,也不推荐使用(命令行程序除外),因为要用注释表达清楚方法实现方式很困难~~~同时接口都是设计好的,一般不定参数的方法都会采用array方式传递~~~以保证健壮性~~~~

更多使用的就是唠叨说的call_user_func_array来实现不定个数参数~~

实际上php手册上推荐的 callback 的实现方式是用 call_user_func 和 call_user_func_array 。毕竟追究 event 的原理本身还是 callback 实现的~~~ 遗憾的是 php 没有提供 event 这个显式的方法来使用~~


如果哪天php可以使用这样的调用方式,那匿名函数应该也就可以直接使用了~~

(new CObject)->someMethod($arg1, $arg2);

呵呵~~

论坛徽章:
0
12 [报告]
发表于 2006-07-11 17:01 |只看该作者
另外,补充一下,一直忽略了的函数~~

create_function

这个东东本身就是用来“Create an anonymous (lambda-style) function”的,呵呵~~

论坛徽章:
0
13 [报告]
发表于 2006-07-11 21:19 |只看该作者
刚刚想起一个概念性的问题.
onxxx的事件模式并不是JS的,而是DOM的.
不过匿名涵数就是JS的,配合DOM的这种事件注册特性,真是灵活.

另外国内的有一套PHP开发的"事件驱动"的框架,不知是怎样的,试过的可给些看法.

论坛徽章:
0
14 [报告]
发表于 2006-07-13 09:24 |只看该作者
这里的事件是我们自己定义的事件

论坛徽章:
0
15 [报告]
发表于 2012-12-11 22:22 |只看该作者
写的太好了,解了我的疑惑。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP