Re: New exceptions mechanism
| From: | Alan Knowles | Date: | Wed, 04 Feb 2004 01:14:37 +0000 |
| Subject: | Re: New exceptions mechanism | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-7524@lists.php.net to get a copy of this message | ||
It is a slightly annoying limitation.. - inherited static methods, cant guess their called class...
I did look at a fix a while ago - it involved adding a pointer to the called class name string, to the exectuter globals, whenever a function is called in the engine... - then to retrieve it became problematic as
- you cant really use a function as then it would assign the value again.
- no-one was too keen to have 'dynamic' constants...
Actually - I AFAIR someone said that it may be fixed in PHP5 back then :) - or suggested debug_backtrace.. (but I'm not sure if that is feasible)
Regards
Alan
Adam Bregenzer wrote:
Stig, On Tue, 2004-02-03 at 17:27, Stig S. Bakken wrote:Try __CLASS__.Thank you for the reply. This does work for the class the method is defined in, however unfortunately it's not a solution for classes that inherit this method. Here's the sample code I used in my first post:
class Foo { function getClassName() { // ??? } } class Bar extends Foo { } echo Foo::getClassName(); // returns 'foo' echo Bar::getClassName(); // returns 'bar' The solution I have right now that is inheritable, though very kludgy is this: class Foo { function someFunc($class_name) { return $class_name; } } class Bar extends Foo { function someFunc($class_name = NULL) { return parent::someFunc(isset($class_name) ? $class_name : __CLASS__); } }
This does work, but I have to have this stub function copied into every class that inherits Foo, plus I have an extra parameter in there. Is there no better way? Thanks again, Adam