>It's becoming messy now - we now need to start to invent all kinds of
>complex propagation rules for it in parallel with the true object
>propagation rules. Why not just have an object then?

Because if you could only see the incredible number of "get_class($this)"
and of "if(__CLASS__!=get_class($this)) do this or that"
and of "$t = get_parent_class($class); return ($t!=__CLASS__ ? $t :
$class)'"
and other special unreadable hacks I have to imagine in order to get what I
want.

Like that one, ridiculous:

static private function getStruct(&$class) {
        if(!(is_array(Entity::$struct) && array_key_exists($class,
Entity::$struct))) {
        eval("if(!isset(".$class."::\$structure))
self::array2xml('".$class."');");
        eval("Entity::\$struct[\$class] = new SimpleXMLElement(
".$class."::\$structure);");
}
return Entity::$struct[$class];
}

Do you understand what it does? Do you find it readable? Clean? I don't.
Yet that's what I have to write in PHP.

And when you have 20 methods in a class, 3 or 4 levels of inheritance, and
you constantly have to manipulate get_parent_class($this) and other
get_class($this) and other eval($class::..), it becomes impossible.

There must be a cleaner way to express what you want to write.
Maybe the problem arises in PHP because, as far as I know, there is no way
to define a function as virtual, like in C++, and so you can't choose
between static lookup or dynamic lookup.

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

Reply via email to