Files
zhamao-framework/src/ZM/Utils/Terminal.php

73 lines
2.1 KiB
PHP
Raw Normal View History

2020-08-31 10:11:06 +08:00
<?php
namespace ZM\Utils;
use Exception;
2020-10-03 23:00:18 +08:00
use Psy\Shell;
2020-09-29 15:07:43 +08:00
use Swoole\Event;
2020-08-31 10:11:06 +08:00
use ZM\Console\Console;
2020-09-29 15:07:43 +08:00
use ZM\Framework;
2020-08-31 10:11:06 +08:00
class Terminal
{
/**
* @param string $cmd
2020-09-29 15:07:43 +08:00
* @param $resource
2020-08-31 10:11:06 +08:00
* @return bool
*/
2020-09-29 15:07:43 +08:00
public static function executeCommand(string $cmd, $resource) {
2020-08-31 10:11:06 +08:00
$it = explodeMsg($cmd);
switch ($it[0] ?? '') {
case 'logtest':
Console::log(date("[H:i:s]") . " [L] This is normal msg. (0)");
Console::error("This is error msg. (0)");
Console::warning("This is warning msg. (1)");
Console::info("This is info msg. (2)");
Console::success("This is success msg. (2)");
Console::verbose("This is verbose msg. (3)");
Console::debug("This is debug msg. (4)");
return true;
case 'call':
$class_name = $it[1];
$function_name = $it[2];
$class = new $class_name([]);
2020-09-29 15:07:43 +08:00
$class->$function_name();
return true;
case 'psysh':
2020-10-03 23:00:18 +08:00
if (Framework::$argv["disable-coroutine"]) {
(new Shell())->run();
2020-11-22 19:18:23 +08:00
} else
2020-09-29 15:07:43 +08:00
Console::error("Only \"--disable-coroutine\" mode can use psysh!!!");
2020-08-31 10:11:06 +08:00
return true;
case 'bc':
$code = base64_decode($it[1] ?? '', true);
try {
eval($code);
} catch (Exception $e) {
}
return true;
case 'echo':
Console::info($it[1]);
return true;
case 'color':
Console::log($it[2], $it[1]);
return true;
case 'stop':
2020-09-29 15:07:43 +08:00
Event::del($resource);
2020-08-31 10:11:06 +08:00
ZMUtil::stop();
return false;
case 'reload':
case 'r':
ZMUtil::reload();
return false;
case '':
return true;
default:
Console::info("Command not found: " . $cmd);
return true;
}
}
}