RE: [PHP] PHP object communication
| From: | ad at m dot beecher dot net | Date: | Tue, 30 Oct 2001 01:39:44 +0000 |
| Subject: | RE: [PHP] PHP object communication | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-72802@lists.php.net to get a copy of this message | ||
I wonder does this go against OOP design though, as Martín suggested? Maybe
I would be better off forgetting about the whole thing, and rethinking my
approach?
Apologies for the delay in replying btw, got sidetracked. And thanks for
your reply.
Thanks,
adam
____________________________________________
Adam Beecher - CEO & Core Geek - ieWebs
e ... ad@m.beecher.net
w ... http://www.iewebs.com
m ... Box 81, Eglinton St, Cork, Ireland
____________________________________________
> -----Original Message-----
> From: Papp Gyozo [mailto:pgerzson@freestart.hu]
> Sent: 26 October 2001 19.01
> To: ad@m.beecher.net; Martín Marqués; php-general@lists.php.net
> Subject: Re: [PHP] PHP object communication
>
>
> i don't want to sink deep inside your discussion, just give a hint:
> use _references_!
>
> class DB {
> var $core;
>
> function DB(&$core)
> {
> $this->core =& $core;
> }
>
> }
>
> class ERROR {
> var $core;
>
> function ERROR(&$core)
> {
> $this->core =& $core;
> }
>
> }
>
> class CORE extends CONFIG {
> var $db;
> var $error;
>
> function CORE()
> {
> $this->error =& new ERROR($this);
> $this->error =& new DB($this);
> }
> }
>
> > How can I access this |
> > v
> > $Core->Error->Something
> > ^
> > From this |
> >
>
> somewhere in one of the DB's methods:
>
> function db_at_fault()
> {
> $this->core->error->something();
> }
>
> ----- Original Message -----
> From: <ad@m.beecher.net>
> To: "Martín Marqués" <martin@bugs.unl.edu.ar>;
> <php-general@lists.php.net>
> Sent: Thursday, October 25, 2001 12:55 PM
> Subject: RE: [PHP] PHP object communication
>
>
> > Hi again Martín,
> >
> > > Sorry for the TOO FAST RESPONCE! :-)
> > >
> > Itchy trigger finger, eh? :)
> >
> > > $Core is one object, and Error and DB are properties of the object.
> > >
> > > Let me put it clearer. You have an Error object, and you now want
> > > to make a DB object, with the same properties of the Error object.
> > > Just extend it.
> > >
> > Ah, but I don't want them to have the same properties you see,
> I just want
> > to be able to access the properties. I'm probably trying to understand
> > something that simply isn't viable in OO, but I'd prefer to
> learn from my
> > mistakes than still have it niggling at the back of my mind. It
> basically
> > comes down to this:
> >
> > How can I access this |
> > v
> > $Core->Error->Something
> > ^
> > From this |
> >
> > Consider the Car class:
> >
> > <?php
> >
> > class Brakes {
> > ...
> > }
> >
> > class Lights {
> > ...
> > }
> >
> > class Car {
> > var $brakes, $lights;
> > function Car() {
> > $this->brakes = new Brakes;
> > $this->lights = new Lights;
> > }
> > }
> >
> > ?>
> >
> > I can't use 'extends' in this instance, because I don't want to
> mix up the
> > braking and the electrical system. However I do want to access the
> > electrical system if I hit the brake - to turn on the brake light. If I
> > *did* in fact use 'extends', I would use parent::lights->something() to
> > access the objects within Car. Is there some way of creating an
> equivalent
> > for sub-objects? Perhaps with references?
> >
> > NOTE: An option I've tried would be to have Lights extend Car, however
> that
> > gives me problems with the constructor. When I initialise the extension,
> I'm
> > also initialising a new instance of Car. If I don't call the
> constructor,
> I
> > can't access the extended objects. If I do, I'm in a loop.
> >
> > I'm not making sense, am I?
> >
> > adam
> >
> >
> >
> >
> >
> >
> >
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
> > For additional commands, e-mail: php-general-help@lists.php.net
> > To contact the list administrators, e-mail: php-list-admin@lists.php.net
> >
>
>