Re: Re: Get name of extending class with static method call
| From: | Torsten Roehr | Date: | Wed, 12 Jan 2005 09:49:10 +0000 |
| Subject: | Re: Re: Get name of extending class with static method call | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-206154@lists.php.net to get a copy of this message | ||
> Torsten, I also found the following link to be helpful. Check out the
> user notes from michael at digitalgnosis dot removethis dot com (he did
> something similar to what I have already suggested, i.e. call_user_func)
>
> http://www.php.net/manual/en/language.oop5.static.php
Hi Jason,
thanks for the link. It helped me to find out that this does work:
class Car {
function drive() {
echo '<pre>';print_r(debug_backtrace());
}
}
class Porsche extends Car {
function drive() {
parent::drive();
}
}
By "tunnelling" the call through Porsche's own drive() method
debug_backtrace() will contain two traces, one of them with the correct
class name.
I tried using reflection but "reflecting" car by using __CLASS__ doesn't
give any information about the classes that extend it. So this doesn't work
either.
Rory's proposed way of reading in the file contents and preg_matching the
method name works, but it's very, very ugly, indeed! ;)
Isn't it somewhat ridiculous that there is no *easy* way in PHP5 to achieve
what I consider to be a pretty straightforward requirement?:
"Get name of the class that invoked a static call of an inherited method"
I would like to thank all of those that cared about my problem and tried to
find a solution by providing a wide variety of ideas. Thank you very much!!!
Do you think it would be wise to ask for help on php-dev?
Best regards, Torsten