=encoding utf8 =head1 NAME Module::Generic::Dynamic - Dynamic Object Class =head1 SYNOPSIS package My::Module; use parent qw( Module::Generic::Dynamic ); # Then, instantiating an object my $object = My::Module->new({ name => $some_name, quantity => 20, metadata => $some_hash_reference, tags => [qw( product entrepreneurship capital )], }); # Then the methods corresponding to the data keys can be accessed my $product_name = $object->name # etc =head1 VERSION v1.2.4 =head1 DESCRIPTION The purpose of this class/package is to provide a framework to create dynamically created class/package. For more granular control over the method to be used for each data key-value, use L =head1 METHODS =head2 new Provided with an hash reference of data, this will create dynamically a class based on the class/pacakge name used to call B It will then associate helper method sbased on the data type for each key of the hash reference. Precisely: =over 4 =item * C This would create method after the key name and a new class also based on the key name, and use the helper method L =item * C If the array contains hash references, this will create a new class/package dynamically and create an object for each hash reference in the array using L Otherwise, it will create the method using L =item * C This would create a method using the helper method L =item * C This would create a method using the helper method L =back =head1 SERIALISATION =for Pod::Coverage FREEZE =for Pod::Coverage STORABLE_freeze =for Pod::Coverage STORABLE_thaw =for Pod::Coverage THAW =for Pod::Coverage TO_JSON Serialisation by L, L and L (or the legacy L) is supported by this package. To that effect, the following subroutines are implemented: C, C, C and C =head1 AUTHOR Jacques Deguest EFE =head1 COPYRIGHT & LICENSE Copyright (c) 2000-2024 DEGUEST Pte. Ltd. You can use, copy, modify and redistribute this package and associated files under the same terms as Perl itself. =cut