AFAIK, if a module follow the standard i wrote in this thread:
https://xoops.org/modules/newbb/viewtopic.php?post_id=353437
It would not be any issue for other modules to use its functions only with one instance:
$MODULE = Module::getInstance();
which "Module" is the module dirname with uppercase of the first letter.
for example in userlog (with dirname = "userlog") you just need to have this in any other module:
$Userlog = Userlog::getInstance();
then you have access to
all functions and handlers and can use it with ease:
$Userlog->getHandler('log')->getCounts($criteria)
the above means you access to table mod_userlog_log so for any other
standard module you just need to know the table name suffix.
all functions to work with database like "getCounts" can be found in XoopsObject class. so all modules have a unify interface functions.
even you can delete table rows or drop fields (and damage the userlog module) from any other module using that handler
$Userlog->getHandler('stats')->dropField("time_update");
In 2.6 it turns to a core helper class that makes usage of another module class/functions more simpler for module developers.
I show the way to write that helper for 2.5.5 modules in
how to write standard module for xoops tutorial.
so instead of what you propose for a module class (Xoopspoll) we have this:
http://svn.code.sf.net/p/xoops/svn/XoopsModules/publisher/trunk/publisher/class/publisher.php
but you should know:
- one table in a module needs one class extend the XoopsObject Core class to work with its own table.
Im still reading this long topic. I will add my comments.