Stanislav Malyshev wrote:
>>>> in that situation A::find(); would not be able to know it was being
>>>> called by B::find() because parent:: is considered an explicit class
>>>> name reference.
>>> It will be, just not by means of parent::.
>> I am missing something....then by what means?
>
> By means of using get_called_class() and then using this information
> to call needed method of needed class.
There is still a disconnect somewhere.
<?php
class A
{
static public function test()
{
echo get_called_class();
}
}
class B extends A
{
static public function test()
{
parent::test();
}
}
B::test();
?>
This will echo 'A'. So like I said you have no way here of telling that
B:: was used.
Now if you are talking about something like:
<?php
class A
{
static public function test($called_class)
{
echo $called_class;
}
}
class B
{
static public function test()
{
parent::test(get_class());
}
}
?>
Then there are two problems (sort of). First problem being, then why
bother with lsb, you can do this already (which more so a 'wth' as
opposed to a problem.) The second and much more prevelent problem is
that iirc you cannot do this kind of loose inheritance with statics in
php 6 without getting at least a strict error thrown (Please correct me
if I am wrong, I don't have the latest php6 code at the moment.)
?>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php