Class-MakeMethods

 view release on metacpan or  search on metacpan

MakeMethods/Emulator/accessors.pm  view on Meta::CPAN

########################################################################

1;

__END__


=head1 NAME

Class::MakeMethods::Emulator::accessors - Emulate the accessors module


=head1 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" );


=head1 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 C<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
C<use Class::MakeMethods::Emulator::accessors '-release_namespace'>. 
The same mechanism is also available for the classic and chained subclasses.

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


=head1 SEE ALSO

See L<Class::MakeMethods> for general information about this distribution. 

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

See L<accessors> for documentation of the original module.

=cut



( run in 3.376 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )