SPUG: OO Perl object backrefrence question
Umar Cheema
umar at drizzle.com
Fri Sep 6 11:06:07 CDT 2002
Ah. In that case read the article Ryan just sent out. It has just the
right stuff for you.
On Fri, 6 Sep 2002, Peter Darley wrote:
> Umar,
> In this case I'm not inheriting, I'm using objects to hold info on it's
> self, as well as collections of other objects that make up a hierarchy. So,
> the page class isn't an inherited class of the survey class, the page
> objects are just included in a property of the survey object. There might
> be a structure like:
>
> [My::Survey=HASH(0x80f6459)] = {ClientName => 'The Client',
> Pages[1] => [My::Page=HASH(0x80f6460)]
> Pages[2] => [My::Page=HASH(0x80f6461)]}
>
> So, what I would like to be able to do is in the My::Page package be able
> to do something like $Self->Parent->{'ClientName'} and get back 'The
> Client'.
>
> I don't know if that makes any sence or not...
>
> Thanks,
> Peter Darley
>
> -----Original Message-----
> From: Umar Cheema [mailto:umar at drizzle.com]
> Sent: Friday, September 06, 2002 8:00 AM
> To: Peter Darley
> Subject: Re: SPUG: OO Perl object backrefrence question
>
>
> Hmmm. Maybe I am not understanding it correctly but if you're inheriting
> from the parent object wouldn't you be able to accomplish that by calling
> a method like
> $self->setClientName($client_name);
>
> from the page object and having the setClientName method placed in the
> parent object.
>
> Then you can simply call a getter method like $self->getClientName() which
> will simply return the client name from the parent object that you have
> already set by calling setClientName from the page object?
>
>
> On Fri, 6 Sep 2002, Peter Darley wrote:
>
> > Friends,
> > Another stupid question...
> >
> > I'm working on building a series of objects in a hierarchy that
> represents
> > a survey. The survey object will hold page objects which will hold
> > questions object, etc.
> > I'm wondering if there is a standard way for an object to know what it's
> > parent object is so I can pull properties from the parent instead of
> storing
> > it in each child object. So, I want to be able to do something like
> > $self->Parent->ClientName to get the client name of the survey a page
> object
> > is part of.
> > There are two ways that I can see of doing this, but they're both not
> > great. The first would be to give the child a reference to the parent
> > object to store in a parent property, but this has problems with circular
> > references, and I'd probably have to do my own garbage collection.
> > The other is to pass a string containing the name of the variable
> > containing the parent object (i.e. "$Main::MySurvey") then use "no strict
> > 'refs'; $$Parent->whatever()" to de-reference it when it needs to be used.
> > This would keep garbage collection working, but wouldn't, I believe, be
> > storable, because the name would likely be different next time the script
> is
> > executed.
> > Anyway, I was hoping that in addition to the normal messages letting me
> > know that this is all a bad thing to do someone might have some advise on
> > setting my objects up like this. :)
> >
> > Thanks,
> > Peter Darley
> >
> >
> > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> > POST TO: spug-list at pm.org PROBLEMS: owner-spug-list at pm.org
> > Subscriptions; Email to majordomo at pm.org: ACTION LIST EMAIL
> > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
> > For daily traffic, use spug-list for LIST ; for weekly, spug-list-digest
> > Seattle Perl Users Group (SPUG) Home Page: http://seattleperl.org
> >
>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
POST TO: spug-list at pm.org PROBLEMS: owner-spug-list at pm.org
Subscriptions; Email to majordomo at pm.org: ACTION LIST EMAIL
Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
For daily traffic, use spug-list for LIST ; for weekly, spug-list-digest
Seattle Perl Users Group (SPUG) Home Page: http://seattleperl.org
More information about the spug-list
mailing list