Hub::Base::Object - Standard object base class


hub-standard documentation  | view source Contained in the hub-standard distribution.

Index


NAME

Top

Hub::Base::Object - Standard object base class

SYNOPSIS

Top



    package MyPackage;
    use strict;
    use Hub qw(:base);
    push our @ISA, qw(Hub::Base::Object);







DESCRIPTION

Top

This virtual base class ties itself to Hub::Knots::Object in order to separate private variables from public ones. That determination is made by inspecting the 'caller', such that a derived class can:

    $self->{'name'} = ref($self);

and the consumer of that class can:

    $object->{'name'} = 'Kylee';

without stepping on your private 'name' variable.

Intention

Using this scheme, one can create an instance of your class and use it just like a HASH, or an object. When your class wants to maintain state information, it may use its self reference as normal. And when the consumer wants to iterate through data values, it may:

    while( my($k,$v) = keys %$object ) {

without any of your state variables needing to be parsed-out.

Bypassing public/private switching

If you wish to set a public member from inside your class, prepend the hash key with public:

    $self->{'public:name'} = 'Steve';

And, to set a private member on an instance of your class, prepend the hash key with private:

    $object->{'private:name'} = 'My::Object';

Additionally, you may grab a reference to the underlying public and private data hashes by using the daccess method:

    my $public = $object->daccess('public');
    croak unless $$public{'name'} eq $$object{'name'};







PUBLIC METHODS

Top

new

Constructor.





 Usage: new [@parameters]
Parameters are passed to the standard initialization method L<refresh>.







daccess

Direct access to member hashes


 Usage: daccess $hash_key
Where $hash_key and be:
  'public'        Public hash
  'private'       Private hash
  'internal'      Internal hash (used to tie things together)




refresh

Return instance to initial state.





 Usage: refresh [@parameters]




Interface method, override in your derived class. Nothing is done in this base class.

Called implictly by new, and when persistent interpreters (such as mod_perl) would have called new.

AUTHOR

Top

Ryan Gies (ryangies@livesite.net)

COPYRIGHT

Top

UPDATED

Top

08/02/2007


hub-standard documentation  | view source Contained in the hub-standard distribution.