2017-04-20 96 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()将节省一些开销解码并验证它。