Class::Tiny::Immutable - Minimalist class construction, with read-only attributes
In Person.pm:
package Person; use Class::Tiny::Immutable qw( name ); 1;
In Employee.pm:
package Employee; use parent 'Person'; use Class::Tiny::Immutable qw( ssn ), { timestamp => sub { time } # lazy attribute with default }; 1;
In example.pl:
use Employee; my $obj = Employee->new; # dies, name and ssn attributes are required my $obj = Employee->new( name => "Larry", ssn => "111-22-3333" ); my $name = $obj->name; my $timestamp = $obj->timestamp; # no attributes can be set $obj->ssn("222-33-4444"); # dies $obj->timestamp(time); # dies
Class::Tiny::Immutable is a wrapper around Class::Tiny which makes the generated attributes read-only, and required to be set in the object constructor if they do not have a lazy default defined. In other words, attributes are either "lazy" or "required".
In addition to methods inherited from Class::Tiny, Class::Tiny::Immutable defines the following additional introspection method:
my @required = Class::Tiny::Immutable->get_all_required_attributes_for($class);
Returns an unsorted list of required attributes known to Class::Tiny::Immutable for a class and its superclasses.
Report any issues on the public bugtracker.
Dan Book <dbook@cpan.org>
This software is Copyright (c) 2017 by Dan Book.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
Moo, MooseX::AttributeShortcuts
To install Class::Tiny::Immutable, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Class::Tiny::Immutable
CPAN shell
perl -MCPAN -e shell install Class::Tiny::Immutable
For more information on module installation, please visit the detailed CPAN module installation guide.