Simon Cozens > Module-Pluggable-Ordered-1.2 > Module::Pluggable::Ordered

Download:
Module-Pluggable-Ordered-1.2.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  0
View Bugs
Report a bug
Module Version: 1.2   Source   Latest Release: Module-Pluggable-Ordered-1.5

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.

OPTIONS ^

The package option can be used to put the pluggability into another package, to be used for modules building on the functionality of this one.

It also provides the only and except options.

     # will only return the Foo::Plugin::Quux plugin
     use Module::Pluggable::Ordered only => [ "Foo::Plugin::Quux" ];

     # will not return the Foo::Plugin::Quux plugin
     use Module::Pluggable::Ordered except => [ "Foo::Plugin::Quux" ];

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.