Marcus Boerger wrote:
It is just some decision that was taken that the newer OO stuff should be a
bit more strict.

I don't remember any such decision. I don't even remember a discussion about it. I'm aware of the efforts of some people to make PHP less PHP and more Java and thus we end up in a situation where:

class foo{}; foo::$bar = 1;

is a fatal error. This makes things that I really like about PHP impossible. By now I'm used to being not constrained by a static language and having such restrictions placed on new features makes no sense to me.

I write code that does things like this:

class Customer
{
    function get($id)
    {
        $res = $DB->query("select * from customer where id=".((int)$id);
        while ($row = $DB->fetchRow($res)) {
            foreach ($row as $key = $value) {
                $this->{$key} = $value;
             }
        }
    }
}

All nice and dynamic. Now, I thought why not make my site options work in a similar way but use class variables (a.k.a. static properties). So I made my options class

class options
{
    function load()
    {
        $res = $DB->query("select * from options");
        while ($row = $DB->fetchRow($res)) {
            self::${$row['KEY']} = $row['VALUE'];
        }
    }
}

so I could for example througout my code use simple:

if (options::$allow_anon) {
    ...
}

without having to make an istance of the class. Simple and beutiful PHP way. All I needed to do to get a new site option variable was to insert "into options(key, value) values ('foo', 'bar')" and I would instantly have my options::$foo.

Unfortunately I was faced with a fatal error about having to declare all static properties. I was afraid that this was not caused by any technical difficulty, but by desire to make PHP less PHP.

I propose that we remove this restriction in PHP 5.2.0 and that we consider this attitude towards making PHP more strict and less dynamic in the future.

Edin

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to