From 49ae47e43e45a74d1c1ebc4e3ea591391948ed14 Mon Sep 17 00:00:00 2001 From: User Date: Fri, 28 Feb 2025 13:11:14 +0300 Subject: [PATCH] 20250228#1 --- README.md | 2 +- application/bin/cli | 3 +++ application/bin/cli.php | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 application/bin/cli create mode 100644 application/bin/cli.php diff --git a/README.md b/README.md index e7f9af3..32dcf51 100644 --- a/README.md +++ b/README.md @@ -9,5 +9,5 @@ composer create-project rmphp/skeleton project-name ``` ```bash -composer create-project rmphp/skeleton:"^4.5" project-name +composer create-project rmphp/skeleton:"^4.6" project-name ``` diff --git a/application/bin/cli b/application/bin/cli new file mode 100644 index 0000000..ff6d2f0 --- /dev/null +++ b/application/bin/cli @@ -0,0 +1,3 @@ +#!/usr/bin/php +usePutenv()->loadEnv(dirname(__DIR__,2).'/.env'); + +/** @var LoggerInterface $logger */ +$logger = require_once dirname(__DIR__,2).'/application/config/components/loggerFactory.php'; +/** @var Container $container */ +$container = require_once dirname(__DIR__,2).'/application/config/components/containerFactory.php'; +$container->set(LoggerInterface::class, $logger); + +if(str_contains($argv[1], ':')) { + list($className, $method) = explode(':', $argv[1]); + if(class_exists($className)) { + try { + $controllers = $container->get($className); + if(method_exists($controllers, $method)) { + $response = $controllers->$method(); + } + if(isset($response)) { + if($response instanceof ResponseInterface) (new ResponseEmitter())->emit($response); + elseif(!is_bool($response)) echo $response; + } + } catch(\DI\DependencyException|\DI\NotFoundException $throwable){ + $logger->error($throwable->getMessage()." on ".$throwable->getFile().":".$throwable->getLine()); + } + } + else echo "Class $className does not exist"; +}