<?

var_export(getLocationInformation());

function getLocationInformation(){
    if($locationInfo === null){
        $locationInfo = array();
        if (function_exists('debug_backtrace')){
            $trace = debug_backtrace();
            $prevHop = null; 
            // make a downsearch to identify the caller
            $hop = array_pop($trace);
            while ($hop !== null){
                $className = @$hop['class'];
                // if ( !empty($className) and ($className == 'logger' or get_parent_class($className) == 'logger') ) {
                $locationInfo['line'] = $hop['line'];
                $locationInfo['file'] = $hop['file'];
                break;
                // }
                $prevHop = $hop;
                $hop = array_pop($trace);
            }
            $locationInfo['class'] = isset($prevHop['class']) ? $prevHop['class'] : 'main';
            if (isset($prevHop['function']) and
                    $prevHop['function'] !== 'include' and
                    $prevHop['function'] !== 'include_once' and
                    $prevHop['function'] !== 'require' and
                    $prevHop['function'] !== 'require_once'){
                $locationInfo['function'] = $prevHop['function'];
            }else{
                $locationInfo['function'] = 'main';
            }
        }
    }
    return $locationInfo;
}

?>
