php语法疑惑?

图片描述

foo

补充:
图片描述

这个是call_user_func的参数吧,还是说这个是隐式调用?


  • 字符串调用

function func1(){}
$func = 'func1'; $func();

  • 类方法调用

class Foo{ public function func2(){} }
call_user_func(['\Foo', 'func2'])

  • 类自身调用

如问题

阅读 3.7k
6 个回答

因为php是世界上最好的语言

一个已实例化的 object 的方法被作为 array 传递,下标 0 包含该 object,下标 1 包含方法名。 在同一个类里可以访问 protected 和 private 方法。

http://php.net/manual/zh/lang...

图片描述

在我打不开网页的情况下,居然有人回答了,好气呀,难受(´;ω;`)ブワッ

基本判断让我写出了如下代码,产生如下错误,大致内容就是要接受对象类型

php -r "echo ([['a'], 'test'])();"

clipboard.png

稍加思索......

能与此段代码相同的php内置函数应该就只有 call_user_func()call_user_func_array() 了吧

call_user_func(Class, method_name);

但是......

这明显不是最后的答案,看语法,基本判断是闭包?回调函数?

依据我的判断,这查找了相关资料,php7新功能局限在匿名类的介绍上,基本没什么相关联的 PS:
有兴趣的可以看看官网上php新特性

于是乎,我还是将目光锁定在call_user_func()上,我不会告诉你,我就是感觉它们两个一模一样的。

一行一行的看完文档,没有任何的自己任何想要得到的结果

想着也没啥事,就在下面,决定看看回调函数的类型

最后我在文档里,看到了这句话

图片描述

。。。已经可以解释为毛匿名函数的回调传入数组会有这样子的效果了

相关链接:

没见过,你能够确定这是一个 php 代码?

至少在php5.x里没有这种语法
这种语法应该是php7里的

试了一下 还真行,感觉跟闭包应该有关系,可能是7.1的新特性

这个应该就只是因为[$obj,$method]是可执行的吧, call_user_func*这类函数肯定用过噻

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题