Add 'php/phpxmlrpc/' from commit 'cd5dbb4a511e7a616a61187a5de1a611a9748cbd'
[plcapi.git] / php / phpxmlrpc / src / Helper / Logger.php
1 <?php
2
3 namespace PhpXmlRpc\Helper;
4
5 class Logger
6 {
7     protected static $instance = null;
8
9     /**
10      * This class is singleton, so that later we can move to DI patterns.
11      *
12      * @return Logger
13      */
14     public static function instance()
15     {
16         if (self::$instance === null) {
17             self::$instance = new self();
18         }
19
20         return self::$instance;
21     }
22
23     /**
24      * Echoes a debug message, taking care of escaping it when not in console mode.
25      * NB: if the encoding of the message is not known or wrong, and we are working in web mode, there is no guarantee
26      *     of 100% accuracy, which kind of defeats the purpose of debugging
27      *
28      * @param string $message
29      * @param string $encoding
30      */
31     public function debugMessage($message, $encoding=null)
32     {
33         // US-ASCII is a warning for PHP and a fatal for HHVM
34         if ($encoding == 'US-ASCII') {
35             $encoding = 'UTF-8';
36         }
37
38         if (PHP_SAPI != 'cli') {
39             $flags = ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE;
40             if ($encoding != null) {
41                 print "<PRE>\n".htmlentities($message, $flags, $encoding)."\n</PRE>";
42             } else {
43                 print "<PRE>\n".htmlentities($message, $flags)."\n</PRE>";
44             }
45         } else {
46             print "\n$message\n";
47         }
48
49         // let the user see this now in case there's a time out later...
50         flush();
51     }
52 }