diff --git a/System/Abstracts/Input.php b/System/Abstracts/Input.php new file mode 100644 index 00000000..c0607d84 --- /dev/null +++ b/System/Abstracts/Input.php @@ -0,0 +1,91 @@ +_argv = $this->resolve($argv); + } + + + + /** + * @param $key + * @param null $default + * @return mixed|null + */ + public function get($key, $default = null) + { + return $this->_argv[$key] ?? $default; + } + + /** + * @param $key + * @param $value + * @return $this + */ + public function set($key, $value) + { + $this->_argv[$key] = $value; + return $this; + } + + + + /** + * @return false|string + */ + public function toJson() + { + return json_encode($this->_argv, JSON_UNESCAPED_UNICODE); + } + + + /** + * @param $parameters + * @return array + * @throws Exception + */ + public function resolve($parameters) + { + $arrays = []; + $parameters = array_slice($parameters, 1); + $this->_command = array_shift($parameters); + foreach ($parameters as $parameter) { + $explode = explode('=', $parameter); + if (count($explode) < 2) { + continue; + } + $arrays[array_shift($explode)] = current($explode); + } + return $arrays; + } + + + /** + * @return string + */ + public function getCommand() + { + return $this->_command; + } + +} diff --git a/System/Application.php b/System/Application.php index 0b57bf8b..0f1ff488 100644 --- a/System/Application.php +++ b/System/Application.php @@ -16,6 +16,7 @@ use HttpServer\Server; use HttpServer\ServerProviders; use Snowflake\Abstracts\BaseApplication; use Snowflake\Abstracts\Config; +use Snowflake\Abstracts\Input; use Snowflake\Exception\NotFindClassException; /** @@ -67,10 +68,20 @@ class Application extends BaseApplication * @param $argv * @throws */ - public function start($argv) + public function start(Input $argv) { $manager = Snowflake::app()->server; - $manager->start(); + switch ($argv->get('action')) { + case 'stop': + $manager->shutdown(); + break; + case 'restart': + $manager->shutdown(); + $manager->start(); + break; + default: + $manager->start(); + } }