在workerman中會經常使用,我們先寫一個回調函數,當某個行為被觸發後使用該函數處理相關邏輯。 在PHP中最常用的幾種回調寫法如下 匿名函數做為回調 匿名函數(Anonymous functions),也叫閉包函數(closures),允許臨時創建一個沒有指定名稱的函數。最經常用作回調函數(ca ...
在workerman中會經常使用,我們先寫一個回調函數,當某個行為被觸發後使用該函數處理相關邏輯。
在PHP中最常用的幾種回調寫法如下
匿名函數做為回調
匿名函數(Anonymous functions),也叫閉包函數(closures),允許臨時創建一個沒有指定名稱的函數。最經常用作回調函數(callback)參數的值。當然,也有其它應用的情況。
匿名函數的回調經常將其賦給一個變數(或一個對象的屬性)
最終結果會輸出11。
這中間有一個use的用法,現在很多框架都在使用,包括我自己發佈的 yii2-wx 在處理微信付款結果通知的時候也有用到。
簡單點說就是當我們設置了匿名函數的時候,可以從父作用域繼承變數,比如如下代碼
則結果是21,沒錯,匿名函數體可以使用繼承過來的變數 $number。
一點要註意的是,這種繼承是在函數被定義的時候就確定了,比如如下代碼
結果還是21,後面重新的賦值並沒有起到作用。
那我們如何解決這個問題那?
@nai8@
只需要將繼承的變數設置為引用即可,如下
搞定了,22出現了。1 + 10 + 11;
在workerman中一般匿名函數作為回調用法如下
普通函數作為回調
這種用法並沒有什麼可以多說的,不像匿名函數那麼多細節,直接看代碼。
在這裡沒有use用法,並且函數定義和賦值給變數順序誰上誰下都可以,在語法上這隻是對add的一次變數賦值,之所以能作為回調是我們使用了add() 導致的,在workerman中一般用法如下
類方法作為回調
學習了前面的知識,類的方法作為回調就好學了,一句話:將一個類的公共方法作為回調函數;
直接上在workerman中的用法
我們將MyClass的onMsg方法作為回調賦值給$worker->onMessage。
類靜態方法做為回調
這個最簡單了,看代碼。
我們將MyClass的靜態方法onMsg方法作為回調賦值給worker->onMessage,因為是靜態方法,在onMsg內不能用this哈。
以上就是學習workerman之前需要知道的幾種php回調寫法的詳細內容
有需要學習交流的友人請加入Swoole交流群的咱們一起,有問題一起交流,一起進步!前提是你是學技術的。感謝閱讀!
點此加入該群