The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Class::Component::Plugin - plugin base for pluggable component framework

SYNOPSIS

Your plugins should succeed to Class::Component::Plugin by your name space, and use it.

    package MyClass::Plugin;
    use strict;
    use warnings;
    use base 'Class::Component::Plugin';
    1;

for instance, the init phase is rewritten.

    package MyClass::Plugin;
    use strict;
    use warnings;
    use base 'Class::Component::Plugin';
    __PACKAGE__->mk_accessors(qw/ base_config /);

    sub init {
        my($self, $c) = @_;
        $self->base_config($self->config);
        $self->config($self->config->{config});
    }
    1;


    package MyClass::Plugin::Hello;
    use strict;
    use warnings;
    use base 'MyClass::Plugin';
    sub hello :Method {
        my($self, $context, $args) = @_;
        'hello'
    }
    sub hello_hook :Hook('hello') {
        my($self, $context, $args) = @_;
        'hook hello'
    }

can use alias method name

    sub foo :Method('bar') {}

    $self->call('bar'); # call foo method

default hook name is method name if undefined Hook name

    sub defaulthook :Hook {}

    $self->run_hook( 'defaulthook' );

HOOK POINTS

init

init phase your plugins

class_component_plugin_attribute_detect
class_component_plugin_attribute_detect_cache_enable

1 = using attribute detect cache 0 = not use cache

class_component_load_attribute_resolver

attribute name space detector

ATTRIBUTES

Method

register_method is automatically done.

Hook

register_hook is automatically done.

AUTHOR

Kazuhiro Osawa <ko@yappo.ne.jp>

SEE ALSO

Class::Component

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.