语法是固定的结构,当然不能随便改变,不然就是另一种语言了.
不过感觉你太拘泥于形式了.
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);
呵呵~~ 另外,补充一下,一直忽略了的函数~~
create_function
这个东东本身就是用来“Create an anonymous (lambda-style) function”的,呵呵~~ 刚刚想起一个概念性的问题.
onxxx的事件模式并不是JS的,而是DOM的.
不过匿名涵数就是JS的,配合DOM的这种事件注册特性,真是灵活.
另外国内的有一套PHP开发的"事件驱动"的框架,不知是怎样的,试过的可给些看法. 这里的事件是我们自己定义的事件 写的太好了,解了我的疑惑。
页:
1
[2]