Quoting "Daniel F. Kudwien" <news@unleashedmind.com>:
Also, module_invoke() is not limited to Drupal hooks / API callbacks. If the returned results of call_user_func_array() work for your particular implementation, this is the best approach for each module that wants to integrate with another, optionally installed module in contrib.
While using module_invoke for things other than hooks today, I do not think we should recommend it since the purpose of module_invoke is to invoke the hook. Using module_invoke for more than its intended purpose is confusing and may cause issues in the future should module_invoke change its ways. Module_invoke is more like calling an object function while executing the function directly is more like executing a static class function. Earnie -- http://for-my-kids.com/ -- http://give-me-an-offer.com/