PHP获取调用本函数方法的位置信息

在有些时候我们需要在函数里知道是哪个文件哪个位置调用了自己,主要函数“debug_backtrace()”

参考一个日志记录函数

//记录日志(内容[文本/数组],文件夹,小标题,是否完整日志)
function __log($msg,$type='base',$title='常规日志',$with_all=false){
	$dir = __DIR__ . DIRECTORY_SEPARATOR .'data' . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR . $type . DIRECTORY_SEPARATOR . date('Y-m');
	$file = $dir . DIRECTORY_SEPARATOR . date('d') . '.txt';
	if(!is_dir($dir) && !mkdir($dir,0777,true)){
		return false;
	}
	if(is_array($msg)){
		$msg = json_encode($msg,JSON_UNESCAPED_UNICODE);
	}

	$all = '';
	if($with_all){
		$deb = debug_backtrace();
		$lines = [];
		foreach ($deb as $value) {
			$lines[] = $value['file'] . '(' . $value['line'] . ':' . $value['function'] .')';
		}
		$all = implode(PHP_EOL,$lines) . PHP_EOL;
	}
	$content = '['.date('H:i:s').'] [' . $title . ']' . PHP_EOL . $msg . PHP_EOL . $all;
	return file_put_contents($file,$content,FILE_APPEND) > 0;
}

如果第四个参数给true的话则会记录哪个文件哪个位置调用的__log函数。

调用

__log('测试日志内容','test','退款列表',true)

效果log日志实例