So to clarify the question...
<?php
class A {
function foo() {
return get_called_class();
}
}
class B extends A {
function bar() {
return A::foo();
}
}
class C extensa A {
function bar() {
return B::bar();
}
}
echo B::foo(); // this must return "B". This is not a question, the question
is in the following two lines...
echo B::bar(); // this must return "B", because B::bar() calls to A::foo()
and A is parent of B, so "late static binding" still the same
I don't understand this. How comes you called A::foo() and you get B?
Doesn't make sense to me. If you call A::foo, you are supposed to get A.
It looks like your intent is that A::foo() returns different things
depending on where it is called, which is not good.
echo C::bar(); // this must return "B" too, because C:bar() calls to
B::bar(), but B is not the parent of C, so the call to B::bar() is handled
in the same way as in the previous line.
This should give the same as previous, of course, since in both cases
B::bar() is called.
Is this the expected behavior? (I would prefer it. My previous patches
worked in this way).
I don't think it's good.
Or may be both lines must return "A"? (like Etienne's patches do, and like
my latest path does)
Yes.
--
Stanislav Malyshev, Zend Software Architect
[EMAIL PROTECTED] http://www.zend.com/
(408)253-8829 MSN: [EMAIL PROTECTED]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php