2017-04-20 93 views

回答

1

您很可能希望vm_call_user_func().

Variant vm_call_user_func(const Variant& function, const Variant& params, 
          bool forwarding = false); 

取決於你的擴展是在調用的時候做,你可能會想捕捉函數可能拋出的異常。

vm_call_user_func知道如何處理的各種方式PHP定義可調用(例如"SomeClass::someMethod"array($obj, "method"))。

根據提供的調用函數的方式,可能會有更優化的方法。你可以要求這個而不是任意的回調,用戶必須提供一個閉包對象。由於封閉對象始終可以被調用(即,您不必驗證存在於我的"SomeClass::someMethod"示例中),所以您可以提取底層對象,將其存儲而不是Variantvm_call_user_func()將節省一些開銷解碼並驗證它。