Re: Globalizing vars in class methods doesnt seem to work, var disappears after global, var is inaccessible in other methods/funcs [message #178796 is a reply to message #178795] |
Sun, 05 August 2012 06:28 |
J.O. Aho
Messages: 194 Registered: September 2010
Karma:
|
Senior Member |
|
|
On 05/08/12 06:08, J. Frank Parnell wrote:
> On Saturday, August 4, 2012 11:45:35 AM UTC-7, Jerry Stuckle wrote:
>> On 8/4/2012 2:24 PM, Jerry Stuckle wrote:
>
>>
>> An addition option I forgot to mention - you could also use the
>>
>> singleton pattern as M. Strobel referenced. However, if you do, you
>>
>> should always have a default parameter in the call so you can use
>>
>> something other than the singleton when you need to.
>
> Ok, I read a little on the singleton, that does seem like a good way of doing it. What I wound up doing, before you guys replied, was just $this->var = 'something' and then doing $t->var where I needed that 'something'. Which I think make sense for OO? Because it is somewhat logical for 'something' to be part of my class, in my situation. Although 'something' is a different object, eg, an api class. My class is a child class of a controller in an MVCish framework.
>
> I just found out that this works
> class test{
> function __construct(){
> $this->makevar();
> }
> function makevar(){
> global $var;
> $var = 'something';// actually, $var = new something();
> }
> }//class
>
> $t = new test;
> echo '<hr>outside class: '.$var;//works And I assume would work in a unrelated function if I globalled it in there.
>
>> always have a default parameter in the call so you can use
>> something other than the singleton when you need to
>
> not sure what this means
class test {
private $var = null;
function __construct($invalue = null) {
$this->var = $invalue;
}
}
IMHO it's better to have functions if you want to manipulate values in a
class, there are many ways to do it, but the simplest would just be:
function getVar() {
return $this->var;
}
function setVar($invalue) {
// verify that the input is of the right form
// then update the value
$this->var = $invalue;
}
--
//Aho
|
|
|