.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" ======================================================================== .\" .IX Title "Plugin 3pm" .TH Plugin 3pm "2018-06-25" "perl v5.26.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Class::DBI::Plugin \- Abstract base class for Class::DBI plugins .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use base \*(AqClass::DBI::Plugin\*(Aq; \& \& sub init { \& my $class = shift; \& $class\->set_sql( statement_name => ... ); \& $class\->add_trigger( ... ); \& $class\->columns( TEMP => ... ); \& } \& \& sub method_name : Plugged { \& my $class = shift; \& $class\->sql_statement_name( ... ); \& } \& \& sub this_method_is_not_exported {} .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Class::DBI::Plugin is an abstract base class for Class::DBI plugins. Its purpose is to make writing plugins easier. Writers of plugins should be able to concentrate on the functionality their module provides, instead of having to deal with the symbol table hackery involved when writing a plugin module. Only three things must be remembered: .IP "1." 4 All methods which are to exported are given the \*(L"Plugged\*(R" attribute. All other methods are not exported to the plugged-in class. .IP "2." 4 Method calls which are to be sent to the plugged-in class are put in the \&\fIinit()\fR method. Examples of these are \fIset_sql()\fR, \fIadd_trigger()\fR and so on. .IP "3." 4 The class parameter for the \fIinit()\fR method and the \*(L"Plugged\*(R" methods is the plugged-in class, not the plugin class. .SH "CAVEATS" .IX Header "CAVEATS" So far this module only \*(L"sees\*(R" methods in the plugin module itself. If there is a class between the base class and the plugin class in the inheritance hierarchy, methods of this class will not be found. In other words, inherited methods will not be found. If requested, I will implement this behaviour. .SH "TODO" .IX Header "TODO" It may be useful for plugin users to be able to choose only the plugin methods they are interested in, if there are more than one. This is not implemented yet. .SH "SEE ALSO" .IX Header "SEE ALSO" .IP "\(bu" 4 Class::DBI .SH "AUTHOR" .IX Header "AUTHOR" Jean-Christophe Zeus, with some help from Simon Cozens. Many thanks to Mark Addison for the idea with the \fIinit()\fR method, and many thanks to Steven Quinney for the idea with the subroutine attributes. .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (C) 2004 by Jean-Christophe Zeus .PP This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.