>> hi all,
>> i wonder if there is a way of creating an instance of a class and
>> reach it direcly from any scope in PHP4. basically what i want is:

>> i don't want to:
>>    - declare global $foo,
>>    - use pre-defined $GLOBALS variable,
>>    - or use a::print
>>
>> thanks.

> Static is your friend.

>
http://www.horde.org/papers/kongress2002-design_patterns/11_singleton_impl.x
ml.html

Also, if using PHP 4, make sure to read the "References with global and
static variables" section. It doesn't work quite the way a lot of people
expect it to.

http://us2.php.net/static

The manual isn't all that clear, but the user comments help a lot (which, I
have found, is often the case, but that's a rant for another day... At least
we have a manual that accepts such comments!)

class Singleton {
        function &getFoo() {
                $object =& Singleton::getFooRef();
                if (!is_a('Foo', $object)) {
                        $object =& new Foo();
                }
                return $object;
        }

        function &getFooRef() {
                static $object = null;
                return $object;
        }
}

$myFoo =& Singleton::getFoo();

Hope that helps.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to