Object::By::Hash - minimalistic constructors for hash based objects
package some_package; use parent qw(Object::By::Hash); sub _constructor { my ($this, ...) = @_; $this->{'something'} = data of attribute; ... return; } package main; use some_package; some_package->constructor(...);
Object::By::Hash provides generic constructors for OO programming, which are tailored to an actual class via a method called _constructor. A generic constructor creates the reference from various sources, blesses, tailors, locks, and finally returns it. A small advantage at a small price of 50 lines of Perl code.
The design goal was a simple and robust API with a straightforward implementation, respecting all limitations of Perl 5.
A generic constructor for objects of the class. If the method _constructor is defined, calls _constructor and forwards any arguments to it. The data structure is locked afterwards.
Prototype means, the object only carries a class and no data. Otherwise like class->constructor.
Takes the class of $old_object to create an object of the same class. Otherwise works like class->constructor.
Takes the class of $old_object to create an object of the same class and the same data. Does not call _constructor, but copies the first level of the object's data structure. To leave no doubt: no deep copy is performed.
For a way to use partial class names for object construction, see wild_construct from Package::Aspect::Wild_Class.
These have no documentation of their own. These should come before Object::By::Hash in order to override any default methods.
Provides the generic methods _get, _set and _get_or_set.
Provides a version of clone_constructor, which recursively calls the method on any contained objects.
There are no tests.
There are numerous far more advanced approaches for generic constructors available on CPAN.
This module has been developed for the specific needs of FReDI and the Mica Environment. It is used by Mica, HTTP::Fools_Gold, Package::Aspect, Text::Placeholder and Object::Episode.
Winfried Trumper <pub+perl(a)wt.tuxomania.net>
Copyright (C) 2011,2012 Winfried Trumper
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Object::By::Hash, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Object::By::Hash
CPAN shell
perl -MCPAN -e shell install Object::By::Hash
For more information on module installation, please visit the detailed CPAN module installation guide.