63 lines
1.5 KiB
PHP
63 lines
1.5 KiB
PHP
<?php
|
|
namespace nulib\output;
|
|
|
|
use nulib\app\app;
|
|
use nulib\exceptions;
|
|
use nulib\output\std\NullMessenger;
|
|
use nulib\output\std\ProxyMessenger;
|
|
|
|
trait _TMessenger {
|
|
protected static ?IMessenger $msg = null;
|
|
|
|
static function set_messenger(IMessenger $msg, bool $replace=false): IMessenger {
|
|
if (self::$msg instanceof NullMessenger) self::$msg = null;
|
|
if ($replace || self::$msg === null) return self::$msg = $msg;
|
|
elseif (self::$msg instanceof ProxyMessenger) self::$msg->addMessenger($msg);
|
|
else self::$msg = new ProxyMessenger(self::$msg);
|
|
return $msg;
|
|
}
|
|
|
|
static function get(): IMessenger {
|
|
return self::$msg ??= new NullMessenger();
|
|
}
|
|
|
|
static function set_verbosity(string $verbosity): void {
|
|
$msg = self::get();
|
|
switch ($verbosity) {
|
|
case "Q":
|
|
case "silent":
|
|
$msg->resetParams([
|
|
"min_level" => self::NONE,
|
|
]);
|
|
break;
|
|
case "q":
|
|
case "quiet":
|
|
$msg->resetParams([
|
|
"min_level" => self::MAJOR,
|
|
]);
|
|
break;
|
|
case "n":
|
|
case "normal":
|
|
$msg->resetParams([
|
|
"min_level" => self::NORMAL,
|
|
]);
|
|
break;
|
|
case "v":
|
|
case "verbose":
|
|
$msg->resetParams([
|
|
"min_level" => self::MINOR,
|
|
]);
|
|
break;
|
|
case "D":
|
|
case "debug":
|
|
app::set_debug();
|
|
$msg->resetParams([
|
|
"min_level" => self::DEBUG,
|
|
]);
|
|
break;
|
|
default:
|
|
throw exceptions::forbidden_value($verbosity, "verbosity", ["silent", "quiet", "normal", "verbose", "debug"]);
|
|
}
|
|
}
|
|
}
|