Re: Re: Scope woe

From: Date: Tue, 30 Jun 2009 12:46:39 +0000
Subject: Re: Re: Scope woe
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-294736@lists.php.net to get a copy of this message
It should be passed into the constructor as a parameter. If you're using OOP properly, there's no reason to use $GLOBALS, ever. Any variable in the $GLOBALS array exists twice in memory, so just keep that in mind, if you plan to use it. On Tue, Jun 30, 2009 at 8:43 AM, Peter Ford<pete@justcroft.com> wrote: > Luke wrote: >> Hello again guys, >> >> I was wondering the best way to tackle the following problem: >> >> I've got a class, containing a property which is another object. So from >> outside I should be able to do >> $firstobject->propertycontainingobject->methodinsidethatobject(); >> >> The $firstobject variable is in the global namespace (having been made with >> $firstobject = new FirstObject;), and I'm having a problem that I'm sure >> many people have when accessing it inside another class, so: >> >> class otherObject >> { >> static function messwithotherthings () >> { >> $firstobject->propertycontainingobject->methodinsidethatobject(); >> } >> } >> >> But $firstobject is blank, which makes sense because in there it is pointing >> to the local variable within the method. >> >> To solve this, I could add 'global $firstobject' inside every method, but >> this is very redundant and boring. I've tried a couple of things like >> adding: >> >> private $firstobject = $GLOBALS['firstobject']; >> >> But apparently that's bad syntax. I was just wondering the best way to get >> around this? >> >> Thanks a lot for your help, >> > > > Set the value of $firstobject in the constructor of otherObject (that's what > constructors are for!): > > eg. > > class otherObject > { >    private $firstobject; > >    function __construct() >    { >        $this->firstobject = $GLOBALS['firstobject']; >    } > >    static function messwithotherthings () >    { >        $this->firstobject->propertycontainingobject->methodinsidethatobject(); >    } > } > > > -- > Peter Ford                              phone: 01580 893333 > Developer                               fax:   01580 893399 > Justcroft International Ltd., Staplehurst, Kent > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > >

« previous php.general (#294736) next »