Class::MakeMethods::Utility::Inheritable.3pm

Langue: en

Version: 2004-09-06 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

NAME

Class::MakeMethods::Utility::Inheritable - "Inheritable" data

SYNOPSIS

   package MyClass;
   sub new { ... }
   
   package MySubclass;
   @ISA = 'MyClass';
   ...
   my $obj = MyClass->new(...);
   my $subobj = MySubclass->new(...);
   
   use Class::MakeMethods::Utility::Inheritable qw(get_vvalue set_vvalue );
   
   my $dataset = {};
   set_vvalue($dataset, 'MyClass', 'Foobar');    # Set value for class
   get_vvalue($dataset, 'MyClass');              # Gets value "Foobar"
   
   get_vvalue($dataset, $obj);                   # Objects "inherit"
   set_vvalue($dataset, $obj, 'Foible');         # Until you override
   get_vvalue($dataset, $obj);                   # Now finds "Foible"
   
   get_vvalue($dataset, 'MySubclass');           # Subclass "inherits"
   get_vvalue($dataset, $subobj);                # As do its objects
   set_vvalue($dataset, 'MySubclass', 'Foozle'); # Until we override it
   get_vvalue($dataset, 'MySubclass');           # Now finds "Foozle"
   
   get_vvalue($dataset, $subobj);                # Change cascades down
   set_vvalue($dataset, $subobj, 'Foolish');     # Until we override again
   
   get_vvalue($dataset, 'MyClass');              # Superclass is unchanged
 
 

DESCRIPTION

This module provides several functions which allow you to store values in a hash corresponding to both objects and classes, and to retrieve those values by searching a object's inheritance tree until it finds a matching entry.

This functionality is used by Class::MakeMethods::Standard::Inheritable and Class::MakeMethods::Composite::Inheritable to construct methods that can both store class data and be overriden on a per-object level.

REFERENCE

find_vself

   $vself = find_vself( $dataset, $instance );
 
 

Searches $instance's inheritance tree until it finds a matching entry in the dataset, and returns either the instance, the class that matched, or undef.

get_vvalue

   $value = get_vvalue( $dataset, $instance );
 
 

Searches $instance's inheritance tree until it finds a matching entry in the dataset, and returns that value

set_vvalue

   $value = set_vvalue( $dataset, $instance, $value );
 
 

Searches $instance's inheritance tree until it finds a matching entry in the dataset, and returns that value