Class::MakeMethods::Emulator::accessors.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::Emulator::accessors - Emulate the accessors module

SYNOPSIS

   package Foo;
   use Class::MakeMethods::Emulator::accessors qw( foo bar baz );
 
 
   my $obj = bless {}, 'Foo';
 
 
   # generates chaining accessors:
   $obj->foo( 'hello ' )
       ->bar( 'world' )
       ->baz( "!\n" );
 
 
   print $obj->foo, $obj->bar, $obj->baz;
 
 

This module also defines subpackages for the classic and chaining subclasses:

   package Bar;
   use Class::MakeMethods::Emulator::accessors;
   use Class::MakeMethods::Emulator::accessors::classic qw( foo bar baz );
 
 
   my $obj = bless {}, 'Bar';
 
 
   # always return the current value, even on set:
   $obj->foo( 'hello ' ) if $obj->bar( 'world' );
 
 
   print $obj->foo, $obj->bar, $obj->baz( "!\n" );
 
 

DESCRIPTION

This module emulates the functionality of the accessors module, using Class::MakeMethods to generate similar methods.

In particular, the following lines are equivalent:

   use accessors 'foo';
   use Class::MakeMethods::Template::Hash 'scalar --get_set_chain' => 'foo';
 
 
   use accessors::chained 'foo';
   use Class::MakeMethods::Template::Hash 'scalar --get_set_chain' => 'foo';
 
 
   use accessors::classic 'foo';
   use Class::MakeMethods::Template::Hash 'scalar' => 'foo';
 
 

You may use this module directly, as shown in the SYNOPSIS above,

Furthermore, you may call "use Class::MakeMethods::Emulator::accessors '-take_namespace';" to alias the accessors namespace to this package, and subsequent calls to the original package will be transparently handled by this emulator. To remove the emulation aliasing, call "use Class::MakeMethods::Emulator::accessors '-release_namespace'". The same mechanism is also available for the classic and chained subclasses.

Caution: This affects all subsequent uses of the accessors module in your program, including those in other modules, and might cause unexpected effects.

SEE ALSO

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

See Class::MakeMethods::Emulator for more about this family of subclasses.

See accessors for documentation of the original module.