[development] implementing "plugins"
Larry Garfield
larry at garfieldtech.com
Fri May 5 04:39:04 UTC 2006
There's a bunch of ways to do plugins in PHP, some OO some not. In the CMS I
use at work, I think I have 2 or 3 different methods in use in various
places. :-)
If this is for Drupal specifically, then there's really just two ways to
reasonably consider:
1) Do you want other modules to be able to define these plugins? If so, then
the Drupal Way(tm) is to define a hook. You would call something like:
module_invoke_all('mymoduleapi', 'anoperation', $someparameter);
And other modules can simply declare a function:
function othermodule_mymoduleapi($op, $stuff) {
...
}
And do whatever. Hooking those together is handled magically by Drupal. See
hook_block(), hook_nodeapi(), etc. for examples.
2) Do you want people to just drop .inc files into a plugins directory inside
your module? For that, look at the flexinode module, which does exactly
that. (There are lots of others, but that's the first one that comes to
mind.) I've not looked at its guts in detail, but that's the direction you'd
want to go.
As for what gets included, If you're module is enabled then Drupal will
automatically include your mymodule.module file on every page load, but
that's it. You can include/require whatever else you need/want. Note that
it is NOT included into the global namespace, so if you put stuff outside of
a function (which you shouldn't do), it won't be happening globally.
http://api.drupal.org/ - Your new best friend. :-)
On Thursday 04 May 2006 22:09, Dan Robinson wrote:
> Hi,
>
> I want to introduce a concept of "plugins" to my module. In this case
> the plugin merely needs to supply a single function that returns data.
> Is the best way to do this to have the plugin call a register function
> with the name of a function (and then call "eval"?). This is probably
> more of a PHP question than a Drupal question. Oh yes and is there
> documentation somewhere on what code Drupal automatically "includes"?
>
> Thanks,
>
> Dan
--
Larry Garfield AIM: LOLG42
larry at garfieldtech.com ICQ: 6817012
"If nature has made any one thing less susceptible than all others of
exclusive property, it is the action of the thinking power called an idea,
which an individual may exclusively possess as long as he keeps it to
himself; but the moment it is divulged, it forces itself into the possession
of every one, and the receiver cannot dispossess himself of it." -- Thomas
Jefferson
More information about the development
mailing list