This a response to luke at liveoakinteractive dot com and davidc at php dot net. Static methods and variables, by definition, are bound to class types not object instances. You should not need to dynamically find out what class a static method belongs to, since the context of your code should make it quite obvious. Your questions reveals that you probably don't quite understand OOP quite yet (it took me a while as well).
Luke, the observed behavior from your particular code snippet makes perfect sense when you think about it. The method getclass() is defined in BooBoof, so the __CLASS__ macro would be bound to BooBoof and defined in relation to the BooBoof class. The fact that CooCoof is a subclass of BooBoof just means that it gains a shortcut to BooBoof::getclass(). So, in effect, you are really asking (in a convoluted way): "What is the class to which belongs the method call BooBoof::getclass()?" The correct solution (if you actually want/need to do this) is to simply implement CooCoof::getclass() { return __CLASS__; } inside of the CooCoof definition, and any childclasses that you want to mimic this behavior. CooCoof::getclass() will have the expected behavior.