鍍金池/ 問答/PHP/ php語法疑惑?

php語法疑惑?

圖片描述

foo

補充:
圖片描述

這個是call_user_func的參數吧,還是說這個是隱式調用?


  • 字符串調用

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

  • 類方法調用

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

  • 類自身調用

如問題

回答
編輯回答
你的瞳

在我打不開網頁的情況下,居然有人回答了,好氣呀,難受(′;ω;`)????

基本判斷讓我寫出了如下代碼,產生如下錯誤,大致內容就是要接受對象類型

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()上,我不會告訴你,我就是感覺它們兩個一模一樣的。

一行一行的看完文檔,沒有任何的自己任何想要得到的結果

想著也沒啥事,就在下面,決定看看回調函數的類型

最后我在文檔里,看到了這句話

圖片描述

。。。已經可以解釋為毛匿名函數的回調傳入數組會有這樣子的效果了

相關鏈接:

2017年3月6日 09:26
編輯回答
淺淺

因為php是世界上最好的語言

一個已實例化的 object 的方法被作為 array 傳遞,下標 0 包含該 object,下標 1 包含方法名。 在同一個類里可以訪問 protected 和 private 方法。

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

圖片描述

2017年8月23日 16:08
編輯回答
奧特蛋

沒見過,你能夠確定這是一個 php 代碼?

2017年1月7日 20:15
編輯回答
孤客

至少在php5.x里沒有這種語法
這種語法應該是php7里的

2018年5月9日 01:37
編輯回答
熟稔

試了一下 還真行,感覺跟閉包應該有關系,可能是7.1的新特性

2018年2月23日 20:23
編輯回答
別傷我

這個應該就只是因為[$obj,$method]是可執(zhí)行的吧, call_user_func*這類函數肯定用過噻

2018年5月10日 20:29