CentOS 7.0 - man page for class::data::inheritable (centos section 3)

Linux & Unix Commands - Search Man Pages

Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


Class::Data::Inheritable(3)    User Contributed Perl Documentation    Class::Data::Inheritable(3)

NAME
       Class::Data::Inheritable - Inheritable, overridable class data

SYNOPSIS
	 package Stuff;
	 use base qw(Class::Data::Inheritable);

	 # Set up DataFile as inheritable class data.
	 Stuff->mk_classdata('DataFile');

	 # Declare the location of the data file for this class.
	 Stuff->DataFile('/etc/stuff/data');

	 # Or, all in one shot:
	 Stuff->mk_classdata(DataFile => '/etc/stuff/data');

DESCRIPTION
       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');

Methods
   mk_classdata
	 Class->mk_classdata($data_accessor_name);
	 Class->mk_classdata($data_accessor_name => $value);

       This is a class method used to declare new class data accessors.  A new accessor will be
       created in the Class using the name from $data_accessor_name, and optionally initially
       setting it to the given value.

       To facilitate overriding, mk_classdata creates an alias to the accessor,
       _field_accessor().  So Suitcase() would have an alias _Suitcase_accessor() that does the
       exact same thing as Suitcase().	This is useful if you want to alter the behavior of a
       single accessor yet still get the benefits of inheritable class data.  For example.

	 sub Suitcase {
	     my($self) = shift;
	     warn "Fashion tragedy" if @_ and $_[0] eq 'Plaid';

	     $self->_Suitcase_accessor(@_);
	 }

AUTHOR
       Original code by Damian Conway.

       Maintained by Michael G Schwern until September 2005.

       Now maintained by Tony Bowden.

BUGS and QUERIES
       Please direct all correspondence regarding this module to:
	 bug-Class-Data-Inheritable@rt.cpan.org

COPYRIGHT and LICENSE
       Copyright (c) 2000-2005, Damian Conway and Michael G Schwern.  All Rights Reserved.

       This module is free software. It may be used, redistributed and/or modified under the same
       terms as Perl itself.

SEE ALSO
       perltooc has a very elaborate discussion of class data in Perl.

perl v5.16.3				    2008-01-25		      Class::Data::Inheritable(3)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 08:06 PM.

Unix & Linux Forums Content Copyright©1993-2018. All Rights Reserved.
×
UNIX.COM Login
Username:
Password:  
Show Password





Not a Forum Member?
Forgot Password?