简单粗暴的debug class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php

class S
{
    static function log($message, $file=null)
    {
        $date = date('Y-m-d H:i:s');
        $_message = "[{$date}]";
        if(is_object($message)){
            $_message .= get_class($message);
        }elseif(is_null($message) || is_bool($message)){
            $_message .= var_export($message, true);
        }elseif(is_array($message)){
            $_message .= print_r($message, true);
        }else{
            $_message .= $message;
        }
        if(is_null($file)){
            $file = 'msg.log';
        }else{
            $file = (string)$file;
        }
        file_put_contents($file, $_message."\n", FILE_APPEND);
    }

    public static function logTrace()
    {
        self::log(self::getTrace());
    }

    public static function getTrace()
    {
        $trace = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT); //ignore args
        unset($trace[0]);
        $records = '';
        foreach($trace as $key => $record){
            $records .= "\r\n#$key ";
            if(isset($record['class']) && isset($record['type']) && isset($record['file']) && isset($record['line'])){
                $records .= $record['file']. "({$record['line']}) => {$record['class']}{$record['type']}{$record['function']}";
            }elseif(isset($record['file']) && isset($record['line'])){
                $records .= $record['file']. "({$record['line']}) => {$record['function']}";
            }else{
                $records .= print_r($record, true);
            }
        }
        return $records;
    }
}