Class::MakeMethods::Attribute.3pm

Langue: en

Autres versions - même langue

Version: 2004-09-06 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

Class::MakeMethods::Attribute - Declare generated subs with attribute syntax

SYNOPSIS

   package MyObject;
   use Class::MakeMethods::Attribute 'Standard::Hash';
 
 
   sub new    :MakeMethod('new');
   sub foo    :MakeMethod('scalar');
   sub bar    :MakeMethod('scalar', { hashkey => 'bar_data' });
   sub debug  :MakeMethod('Standard::Global:scalar');
 
 

DESCRIPTION

This package allows common types of methods to be generated via a subroutine attribute declaration. (Available in Perl 5.6 and later.)

Adding the :MakeMethod() attribute to a subroutine declaration causes Class::MakeMethods to create and install a subroutine based on the parameters given to the :MakeMethod attribute.

You can declare a default method-generation class by passing the name of a MakeMethods subclass in the use Class::MakeMethods::Attribute statement. This default method-generation class will also apply as the default to any subclasses declared at compile time. If no default method-generation class is selected, you will need to fully-qualify all method type declarations.

EXAMPLE

Here's a typical use of Class::MakeMethods::Attribute:
   package MyObject;
   use Class::MakeMethods::Attribute 'Standard::Hash';
 
 
   sub new    :MakeMethod('new');
   sub foo    :MakeMethod('scalar');
   sub bar    :MakeMethod('scalar', { hashkey => 'bar_data' });
   sub debug  :MakeMethod('Standard::Global:scalar');
 
 
   package MySubclass;
   use base 'MyObject';
 
 
   sub bazzle :MakeMethod('scalar');
 
 

This is equivalent to the following explicit Class::MakeMethods invocations:

   package MyObject;
 
 
   use Class::MakeMethods ( 
     -MakerClass => 'Standard::Hash',
     new => 'new',
     scalar => 'foo',
     scalar => [ 'ba', { hashkey => 'bar_data' } ],
     'Standard::Global:scalar' => 'debug',
   );
 
 
   package MySubclass;
   use base 'MyObject';
 
 
   use Class::MakeMethods ( 
     -MakerClass => 'Standard::Hash',
     scalar => 'bazzle',
   );
 
 

DIAGNOSTICS

The following warnings and errors may be produced when using Class::MakeMethods::Attribute to generate methods. (Note that this list does not include run-time messages produced by calling the generated methods, or the standard messages produced by Class::MakeMethods.)
Can't apply MakeMethod attribute to %s declaration.
You can not use the ":MakeMethod" attribute with lexical or anonymous subroutine declarations.
No method type provided for MakeMethod attribute.
You called ":MakeMethod()" without the required method-type argument.

SEE ALSO

See Attribute::Handlers byÊDamian Conway.

See Class::MakeMethods for general information about this distribution.