NAME
Hub::Base::Object - Standard object base class
Part of the Hub Library
SYNOPSIS
package MyPackage;
use strict;
use Hub qw(:base);
our @ISA = qw(Hub::Base::Object);
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'};
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.
INTERNAL
AUTHOR
Ryan Gies
COPYRIGHT
Copyright (c) 2006 Livesite Networks, LLC. All rights reserved.
Copyright (c) 2000-2005 Ryan Gies. All rights reserved.
UPDATED
This file created by mkdocs.pl on 8/29/2006 at 2:07pm