| Class::Accessor::Classy - accessors with minimal inheritance |
Class::Accessor::Classy - accessors with minimal inheritance
package YourPackage;
use Class::Accessor::Classy; with qw(new); # with a new() method ro qw(foo); # read-only rw qw(bar); # read-write rs baz => \ (my $set_baz); # read-only, plus a secret writer
# alternatively:
my $set_bip = rs 'bip';
ro_c suitcase => 'red'; # read-only class data
rw_c hat => 'black'; # read-write class data
rs_c socks => \ (my $set_socks) => undef;
# alternative secret writer syntax
my $set_shoes = rs_c shoes => undef;
# also class read-only:
constant seven => 7;
constant eight => this->seven + 1;
no Class::Accessor::Classy;
# ^-- removes all of the syntax bits from your namespace
package whatever;
YourPackage->set_hat(undef); my $obj = YourPackage->new(foo => 4, bar => 2); # NOTE I'm thinking of deprecating the get_foo() usage warn "foo ", $obj->foo; YourPackage->$set_socks("tube");
Unlike other class-modifying code, this is not designed to be inherited from. Instead, you simply use it and get an invisible subclass containing your accessors. If you use the 'no' syntax (to call unimport), you are left with a squeaky-clean namespace.
This introspection stuff is unreliable -- don't use it.
@attribs = Class::Accessor::Classy->find_accessors($class);
@classlist = Class::Accessor::Classy->find_subclasses($class);
Customized subclasses may override these methods to create a new kind of accessor generator.
You do not subclass Class::Accessor::Classy to construct your objects.
If you are just creating MyObject, you are not inheriting any of these methods.
The rest of this documentation only pertains to you if you are trying to create something like Class::Accessor::Classy::MyWay.
Read these as: $CAC = 'Class::Accessor::Classy'; (or whatever subclass you're creating.)
my %exports = $CAC->exports;
$CAC->import;
$CAC->unimport;
Creates and returns the package in which the accessors will live. Also pushes the created accessor package into the caller's @ISA.
If it already exists, simply returns the cached value.
my $package = $CAC->create_package( class => $caller, in => $package, # optional );
$CAC->install_sub($class, $name, $subref, $note);
$CAC->annotate($class, $name, $note);
my %notes = $CAC->get_notes;
$CAC->make_standards($class, @list);
Returns a compiled getter subref corresponding to whether or not the class has a '--get' method.
$CAC->_getter($class, $item);
$CAC->make_getters($class, @list);
Returns a compiled setter subref corresponding to whether or not the class has a '--set' method.
$CAC->_setter($class, $item);
$CAC->make_setters($class, @list);
Creates immutable (one-time-only) setters.
CAC->make_immutable($class, @list);
my @names = $CAC->make_secrets($class, @list);
$CAC->make_aliases($class, @list);
my $subref = $package->do_eval($string, @checks);
$CAC->make_array_method( class => $class, item => $name, functions => [@functions], secret => $bool, );
If secret is true, will return the list of names.
my %subs = $CAC->_get_array_subs($name);
$CAC->make_class_data($mode, $class, $key, $value);
If mode is 'rs', returns the secret setter name.
Eric Wilhelm @ <ewilhelm at cpan dot org>
If you found this module on CPAN, please report any bugs or feature requests through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
If you pulled this development version from my /svn/, please contact me directly.
Copyright (C) 2006-2007 Eric L. Wilhelm, All Rights Reserved.
Absolutely, positively NO WARRANTY, neither express or implied, is offered with this software. You use this software at your own risk. In case of loss, no person or entity owes you anything whatseover. You have been warned.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Class::Accessor::Classy - accessors with minimal inheritance |