Hello Phil,

Tuesday, July 8, 2003, 11:11:49 PM, you wrote:

PD> Is there a function that can be used to retrieve the name of a statically
PD> called child class from within an inherited method? debug_backtrace() works
PD> for this purpose, but I've seen people say that it is slow. Consider the
PD> example code below. Is this a planned feature for PHP 5, or could this
PD> possibly make it into 4.x? What options do I have?

PD> <?

PD> class a
PD> {
PD>     function test_backtrace()
PD>     {
PD>         $bt = debug_backtrace();
PD>         echo "class pre: ".__CLASS__."\n";
PD>         echo "class bt: ".$bt[0]["class"]."\n";
PD>         echo "class get_class: ".get_class($this)."\n";
PD>     }
PD> }

PD> class b extends a
PD> {
PD> }

PD> echo "** static: \n";
PD> b::test_backtrace();
PD> $b = new b();
PD> echo "** object: \n";
$b->>test_backtrace();

?>>

PD> Output Looks Like:

PD> ** static: 
PD> class pre: a
PD> class bt: b
PD> class get_class: 
PD> ** object: 
PD> class pre: a
PD> class bt: b
PD> class get_class: b

- the method is defined in class a so pre is correct
- backtrace @[0] sees the top caller class that's b that's correct
- get_class($var) sees the class of the variable. In you static case that is
  NULL which doesn't have a class and in your object case that's b. Therfore
  this is also correct.

Everything show is correct so far. The only problem is that test_backtrace()
could be called static without being defined as such.


PD> Perhaps get_class() could return the expected class name when
PD> called without arguements?

This is nonsense. NULL does not have a class type.

Best regards,
 Marcus                            mailto:[EMAIL PROTECTED]


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to