#
Class::Tiny
By
#
DESCRIPTION
- This module offers a minimalist class construction kit in around 120 lines of code. Here is a list of features:
- defines attributes via import arguments
- generates read-write accessors
- supports lazy attribute defaults
- supports custom accessors
- superclass provides a standard new constructor
- new takes a hash reference or list of key/value pairs
- new supports providing
BUILDARGS
to customize constructor options - new calls BUILD for each class from parent to child
- superclass provides a DESTROY method
- DESTROY calls DEMOLISH for each class from child to parent
Multiple-inheritance is possible, with superclass order determined via mro::get_linear_isa.
It uses no non-core modules for any recent Perl. On Perls older than v5.10 it requires MRO::Compat
. On Perls older than v5.14, it requires Devel::GlobalDestruction
.
#
USAGE
#
Defining attributes
Define attributes as a list of import arguments:
package Foo::Bar;
use Class::Tiny qw(
name
id
height
weight
);
For each attribute, a read-write accessor is created unless a subroutine of that name already exists:
$obj->name; # getter
$obj->name( "John Doe" ); # setter
See the rest at: https://metacpan.org/pod/Class::Tiny