=head1 NAME

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

Part of the L<Hub Library|hublib>

=head1 SYNOPSIS


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


=head1 DESCRIPTION


This virtual base class ties itself to L<Hub::Knots::Object|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.

=head2 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.

=head2 Bypassing public/private switching

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

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

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

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

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

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


=head1 METHODS

=begin html

<table><tr><td>
<a class="methlink" href="#item_daccess">daccess</a>

</td><td>
<a class="methlink" href="#item_new">new</a>

</td><td>
<a class="methlink" href="#item_refresh">refresh</a>

</td></tr></table>

=end html


=over 4

=item daccess

B<Direct access to member hashes>




 Usage: daccess KEYNAME


KEYNAME:


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

=back

=over 4

=item new

B<Constructor.>





 Usage: new LIST


Parameters are passed to the standard initialization method L<refresh>.


=back

=over 4

=item refresh

B<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 L<new>, and when persistent interpreters (such as
mod_perl) would have called L<new>.


=back

=head1 INTERNAL

=begin html



=end html

=head1 AUTHOR



Ryan Gies

=head1 COPYRIGHT



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

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

=head1 UPDATED

This file created by  on  at 

=cut
