亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可變函數!為什么不可以?類屬性要怎么實現。

可變函數!為什么不可以?類屬性要怎么實現。

PHP
下雨天2015 2017-03-29 10:41:36
查看完整描述

1 回答

?
pardon110

TA貢獻1038條經驗 獲得超227個贊

$d是一個匿名函數作為變量的值,$d()為執行匿名函數,得到外部類Bim實例,

$d()->doSomething(),執行Bim實例的doSomething方法,所以可行。

$c是Container的實例

$c->bim 實例屬性指向的是一個匿名函數形成的閉包(匿名函數目前是通過Closure 類來實現的),PHP 會自動把此種表達式轉換成內置類 Closure 的對象實例,很顯然Closue類(php內置類)是沒有doSomething方法

$c->bim()? 很顯然執行類container的bim方法,顯然該類沒有此方法,所以$c->bim()->doSomething()不可行,因為他走到$c->bim()就報致命錯了。



查看完整回答
反對 回復 2017-04-07
  • pardon110
    pardon110
    其實后者之所以不行,在于php對$c->bim()的解析,php不會先解析$c->bim屬性得到匿名函數, 它會直接進入$c->bim(),認為在調用實例$c的bim方法
  • 1 回答
  • 4 關注
  • 1208 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號