|
@ -46,7 +46,7 @@ class CliController |
|
|
public static function getInstance() |
|
|
public static function getInstance() |
|
|
{ |
|
|
{ |
|
|
if (!isset(self::$instance)) { |
|
|
if (!isset(self::$instance)) { |
|
|
self::$instance = new self(); |
|
|
|
|
|
|
|
|
self::$instance = new static(); |
|
|
} |
|
|
} |
|
|
return self::$instance; |
|
|
return self::$instance; |
|
|
} |
|
|
} |
|
@ -58,32 +58,42 @@ class CliController |
|
|
public function execute($cli) |
|
|
public function execute($cli) |
|
|
{ |
|
|
{ |
|
|
try { |
|
|
try { |
|
|
if (is_string($cli)) { |
|
|
|
|
|
if (!class_exists($cli)) { |
|
|
|
|
|
throw new GeneralException('Action class "' . $cli . '" not found.'); |
|
|
|
|
|
} |
|
|
|
|
|
$cli = new $cli; |
|
|
|
|
|
} |
|
|
|
|
|
if (!in_array('iCli', class_implements($cli))) { |
|
|
|
|
|
throw new ErrorException('Runner "' . get_class($cli) . '" need implement of "iCli" interface.'); |
|
|
|
|
|
} |
|
|
|
|
|
$cli->run(); |
|
|
|
|
|
if (Config::get('PROFILER')) { |
|
|
|
|
|
$profile = Profiler::getInstance()->getCli(); |
|
|
|
|
|
if (Config::get('LOGGING')) { |
|
|
|
|
|
Logger::getInstance()->log($profile); |
|
|
|
|
|
} else { |
|
|
|
|
|
echo $profile; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
$this->run($cli); |
|
|
} |
|
|
} |
|
|
catch (Exception $e) { |
|
|
catch (Exception $e) { |
|
|
$code = $e->getCode(); |
|
|
|
|
|
if ($e instanceof ErrorException) { |
|
|
|
|
|
$code = $e->getSeverity(); |
|
|
|
|
|
|
|
|
$this->exception($e); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected function run($cli) |
|
|
|
|
|
{ |
|
|
|
|
|
if (is_string($cli)) { |
|
|
|
|
|
if (!class_exists($cli)) { |
|
|
|
|
|
throw new GeneralException('Action class "' . $cli . '" not found.'); |
|
|
} |
|
|
} |
|
|
file_put_contents($this->error_stream, PHP_EOL . 'Error ' . '#' . $code . ': ' . $e->getMessage() . PHP_EOL, FILE_APPEND); |
|
|
|
|
|
file_put_contents($this->error_stream, PHP_EOL . 'Stack trace: ' . PHP_EOL . $e->getTraceAsString() . PHP_EOL, FILE_APPEND); |
|
|
|
|
|
|
|
|
$cli = new $cli; |
|
|
|
|
|
} |
|
|
|
|
|
if (!in_array('iCli', class_implements($cli))) { |
|
|
|
|
|
throw new ErrorException('Runner "' . get_class($cli) . '" need implement of "iCli" interface.'); |
|
|
|
|
|
} |
|
|
|
|
|
$cli->run(); |
|
|
|
|
|
if (Config::get('PROFILER')) { |
|
|
|
|
|
$profile = Profiler::getInstance()->getCli(); |
|
|
|
|
|
if (Config::get('LOGGING')) { |
|
|
|
|
|
Logger::getInstance()->log($profile); |
|
|
|
|
|
} else { |
|
|
|
|
|
echo $profile; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected function exception($e) |
|
|
|
|
|
{ |
|
|
|
|
|
$code = $e->getCode(); |
|
|
|
|
|
if ($e instanceof ErrorException) { |
|
|
|
|
|
$code = $e->getSeverity(); |
|
|
} |
|
|
} |
|
|
|
|
|
file_put_contents($this->error_stream, PHP_EOL . 'Error ' . '#' . $code . ': ' . $e->getMessage() . PHP_EOL, FILE_APPEND); |
|
|
|
|
|
file_put_contents($this->error_stream, PHP_EOL . 'Stack trace: ' . PHP_EOL . $e->getTraceAsString() . PHP_EOL, FILE_APPEND); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |