Hub::Base::Object

- NAME
- SYNOPSIS
- DESCRIPTION

- Intention
- Bypassing public/private switching

- METHODS
- INTERNAL
- AUTHOR
- COPYRIGHT
- UPDATED

# NAME

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

Part of the Hub Library

Top

# SYNOPSIS

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

Top

# DESCRIPTION

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'};

Top

# METHODS

daccess | new | refresh

daccess
  Direct access to member hashes

       Usage: daccess KEYNAME

  KEYNAME:

        'public'        Public hash
        'private'       Private hash
        'internal'      Internal hash (used to tie things together)

new
  Constructor.

       Usage: new LIST

  Parameters are passed to the standard initialization method refresh.

refresh
  Return instance to initial state.

       Usage: refresh LIST

  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.

Top

# INTERNAL

Top

# AUTHOR

Ryan Gies

Top

# COPYRIGHT

Copyright (c) 2006 Livesite Networks, LLC. All rights reserved.

Copyright (c) 2000-2005 Ryan Gies. All rights reserved.

Top

# UPDATED

This file created by on at

Top