note 90430 deleted from function.get-called-class by danbrown
| From: | danbrown@php.net | Date: | Wed, 22 Apr 2009 12:46:50 +0000 |
| Subject: | note 90430 deleted from function.get-called-class by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-153578@lists.php.net to get a copy of this message | ||
Note Submitter: joel at geekoracle dot com
----
An enhancement to progman at centrum dot sk implementation of get_called_class():
<?php
function get_called_class()
{
$bt = debug_backtrace();
// print_r($bt);
if ( isset($bt[2]) ) {
if ( isset($bt[2]['class']) ) {
// handles self::someMethod()
return $bt[2]['class'];
} else {
// handles call_user_func() and call_user_func_array()
return $bt[2]['args'][0][0];
}
} else {
$lines = file($bt[1]['file']);
preg_match('/([a-zA-Z0-9\_]+)::'.$bt[1]['function'].'/',
$lines[$bt[1]['line']-1],
$matches);
return $matches[1];
}
}