CGI-Application-Plugin-AbstractCallback

 view release on metacpan or  search on metacpan

lib/CGI/Application/Plugin/AbstractCallback.pm  view on Meta::CPAN

package CGI::Application::Plugin::AbstractCallback;

use strict;
use warnings;

our $VERSION = '0.03';

use Carp;
use CGI::Application;

sub import {
	my $class = shift;
	my $hook = shift;
	
	my $caller = scalar caller;
	
	if (UNIVERSAL::isa($caller, 'CGI::Application') && defined $hook) {
		eval {
			no strict 'refs';
			# $caller->add_callback($hook, \&{$class . '::callback'});
			$caller->add_callback($hook, $class->can('callback'));
		};
		if ($@) {
			carp $@;
		}
	}
	else {
		carp "Invalid call from package is't a CGI::Application, or not defined hook $hook";
	}
}

sub callback {
	my CGI::Application $self = shift;
	my %args = @_;
	# no action
	# please override me
}

1;
__END__

=head1 NAME

CGI::Application::Plugin::AbstractCallback - This is the abstract method for externalizing callbacks

=head1 SYNOPSIS

	package MyApp::Plugin::MyInitCallback;
	
	use strict;
	use warnings;
	
	use base CGI::Application::Plugin::AbstractCallback;
	
	sub callback {
		# override me
	}
	1;
	
	package MyApp;
	
	use base qw|CGI::Application|;
	use MyApp::Plugin::MyInitCallback qw|init|; ## add init hook your callback
	
	1;

=head1 DESCRIPTION

This module is the abstract class for externalizing callbacks.
The callback defined in the child class( of this class)  is added in specified hook.

=head1 METHODS

=head2 callback()

This method is abstract, So you should implement and override the method as callback.

=head1 SEE ALSO

L<CGI::Application|CGI::Application>
perl(1)

=head1 AUTHOR

Toru Yamaguchi, E<lt>zigorou@cpan.orgE<gt>

=head1 THANKS

=over 4

=item Songhee Han

=back 4

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2006 by Toru Yamaguchi

This library is free software. You can modify and or distribute it under the same terms as Perl itself.

=cut



( run in 1.434 second using v1.01-cache-2.11-cpan-ceb78f64989 )