NAME
Module::Pluggable::Ordered - Call module plugins in a specified order
SYNOPSIS
package Foo;
use Module::Pluggable::Ordered;
Foo->call_plugins("some_event", @stuff);
Meanwhile, in a nearby module...
package Foo::Plugin::One;
sub some_event_order { 99 } # I get called last of all
sub some_event { my ($self, @stuff) = @_; warn "Hello!" }
And in another:
package Foo::Plugin::Two;
sub some_event_order { 13 } # I get called relatively early
sub some_event { ... }
DESCRIPTION
This module behaves exactly the same as Module::Pluggable
, supporting all of its options, but also mixes in the call_plugins
method to your class. call_plugins
acts a little like Class::Trigger
; it takes the name of a method, and some parameters. Let's say we call it like so:
__PACKAGE__->call_plugins("my_method", @something);
call_plugins
looks at the plugin modules found using Module::Pluggable
for ones which provide my_method_order
. It sorts the modules numerically based on the result of this method, and then calls $_->my_method(@something)
on them in order. This produces an effect a little like the System V init process, where files can specify where in the init sequence they want to be called.
SEE ALSO
Module::Pluggable, Class::Trigger
AUTHOR
Simon Cozens, <simon@cpan.org>; please report bugs via the CPAN Request Tracker.
COPYRIGHT AND LICENSE
Copyright 2004 by Simon Cozens
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.