<?php
class Logger {
public function debug($input) {
}
public function log($input) { echo $input;
}
}
class Debug {
protected $logger;
protected static $_instance = NULL;
final private function __construct() {
$this->logger = new Logger();
}
final private function __clone() { }
final public static function getInstance()
{
if(null !== static::$_instance){
return static::$_instance;
}
static::$_instance = new static();
return static::$_instance;
}
public function getLogger()
{
return $this->logger;
}
static public function __callStatic($name, $args)
{
$logger = self::getInstance()->getLogger();
return $logger->{$name}(...$args);
}
}
}
function debug($input)
{
Debug::debug($input);
}
function traceLog($input)
{
}
debug(['42','asdfasdf',33]);
traceLog("Moving to track 3");
PD9waHAKY2xhc3MgTG9nZ2VyIHsKCXB1YmxpYyBmdW5jdGlvbiBkZWJ1ZygkaW5wdXQpIHsKCQl2YXJfZHVtcCgkaW5wdXQpOwoJfQoJcHVibGljIGZ1bmN0aW9uIGxvZygkaW5wdXQpIHsKCQllY2hvICRpbnB1dDsKCX0KfQoKY2xhc3MgRGVidWcgewoJcHJvdGVjdGVkICRsb2dnZXI7CiAgICBwcm90ZWN0ZWQgc3RhdGljICRfaW5zdGFuY2UgPSBOVUxMOwoKICAgIGZpbmFsIHByaXZhdGUgZnVuY3Rpb24gIF9fY29uc3RydWN0KCkgeyAKICAgIAkkdGhpcy0+bG9nZ2VyID0gbmV3IExvZ2dlcigpOwogICAgfQoKICAgIGZpbmFsIHByaXZhdGUgZnVuY3Rpb24gIF9fY2xvbmUoKSB7IH0KCiAgICBmaW5hbCBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbmNlKCkKICAgIHsKICAgICAgICBpZihudWxsICE9PSBzdGF0aWM6OiRfaW5zdGFuY2UpewogICAgICAgICAgICByZXR1cm4gc3RhdGljOjokX2luc3RhbmNlOwogICAgICAgIH0KICAgICAgICBzdGF0aWM6OiRfaW5zdGFuY2UgPSBuZXcgc3RhdGljKCk7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHN0YXRpYzo6JF9pbnN0YW5jZTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldExvZ2dlcigpIAogICAgewogICAgCXJldHVybiAkdGhpcy0+bG9nZ2VyOwogICAgfQogICAgCiAgIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gX19jYWxsU3RhdGljKCRuYW1lLCAkYXJncykgCiAgIHsKICAgCSAgJGxvZ2dlciA9IHNlbGY6OmdldEluc3RhbmNlKCktPmdldExvZ2dlcigpOwogICAgICBpZihtZXRob2RfZXhpc3RzKCRsb2dnZXIsICRuYW1lKSkgewogICAgICAJCiAgICAgIAlyZXR1cm4gJGxvZ2dlci0+eyRuYW1lfSguLi4kYXJncyk7CiAgICAgIH0JCiAgIH0KfQoKZnVuY3Rpb24gZGVidWcoJGlucHV0KSAKewoJRGVidWc6OmRlYnVnKCRpbnB1dCk7Cn0KCmZ1bmN0aW9uIHRyYWNlTG9nKCRpbnB1dCkgCnsKCURlYnVnOjpsb2coJGlucHV0KTsKfQoKCmRlYnVnKFsnNDInLCdhc2RmYXNkZicsMzNdKTsKCnRyYWNlTG9nKCJNb3ZpbmcgdG8gdHJhY2sgMyIpOwo=