Please login to access the resource

Inheritable, overridable class data

Edit Package perl-Class-Data-Inheritable

Class::Data::Inheritable is for creating accessor/mutators to class data.
That is, if you want to store something about your class as a whole
(instead of about a single object). This data is then inherited by your
subclasses and can be overriden.

For example:

Pere::Ubu->mk_classdata('Suitcase');

will generate the method Suitcase() in the class Pere::Ubu.

This new method can be used to get and set a piece of class data.

Pere::Ubu->Suitcase('Red');
$suitcase = Pere::Ubu->Suitcase;

The interesting part happens when a class inherits from Pere::Ubu:

package Raygun;
use base qw(Pere::Ubu);

# Raygun's suitcase is Red.
$suitcase = Raygun->Suitcase;

Raygun inherits its Suitcase class data from Pere::Ubu.

Inheritance of class data works analogous to method inheritance. As long as
Raygun does not "override" its inherited class data (by using Suitcase() to
set a new value) it will continue to use whatever is set in Pere::Ubu and
inherit further changes:

# Both Raygun's and Pere::Ubu's suitcases are now Blue
Pere::Ubu->Suitcase('Blue');

However, should Raygun decide to set its own Suitcase() it has now
"overridden" Pere::Ubu and is on its own, just like if it had overriden a
method:

# Raygun has an orange suitcase, Pere::Ubu's is still Blue.
Raygun->Suitcase('Orange');

Now that Raygun has overridden Pere::Ubu futher changes by Pere::Ubu no
longer effect Raygun.

# Raygun still has an orange suitcase, but Pere::Ubu is using Samsonite.
Pere::Ubu->Suitcase('Samsonite');

Refresh
Refresh
Source Files
Filename Size Changed
Class-Data-Inheritable-0.08.tar.bz2 0000005694 5.56 KB
perl-Class-Data-Inheritable.changes 0000002518 2.46 KB
perl-Class-Data-Inheritable.spec 0000003762 3.67 KB
Revision 12 (latest revision is 16)
Berthold Gunreben's avatar Berthold Gunreben (azouhr) accepted request 53903 from Christian Wittmer's avatar Christian Wittmer (computersalat) (revision 12)
Accepted submit request 53903 from user computersalat
Comments 0
openSUSE Build Service is sponsored by