Hi!

I had a little discussion on a forum topic about static class method and
properties. Somebody there pointed to the PEAR::getStaticProperty()
solution to emulate static properties in PHP4. I was not familiar with
it but its approach seems a little strange for me. It is not really more
than storing static properties in a global array.

I tried to make something better and come out with this solutions, which
I think is much more closer to the philosophy of a static property and
maybe is more elegant (of course this is subjective :)).

I'm curious about your opinion.


Regards,
Felhő
-------------------------------------------------------------------------
<?php
        class base
        {
                function &staticProperty($name, $value = null)
                {
                        static $properties = array();

                        if (func_num_args() == 2) {
                                $properties[$name] = $value;
                                return $properties[$name];
                        } else {
                                if (array_key_exists($name, $properties)) {
                                        return $properties[$name];
                                } else {
                                        $php4_4suck = null;
                                        return $php4_4suck;
                                }
                        }
                }
        }


        class foo extends base
        {
        }

        class bar extends base
        {
        }


        foo::staticProperty('foo', 'foo');
        var_dump(bar::staticProperty('foo')); // NULL
        bar::staticProperty('foo', 'bar');
        var_dump(bar::staticProperty('foo')); // "bar"


        $foo = new foo();
        var_dump($foo->staticProperty('foo'));  // "foo"
        $bar = new bar();
        var_dump($bar->staticProperty('foo')); // "bar"


        $fooStaticProp =& foo::staticProperty('foo');
        $fooStaticProp = 'fooChanged';
        var_dump($foo->staticProperty('foo')); // "fooChanged"
?>

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

Reply via email to