diff --git a/Annotation/Annotation.php b/Annotation/Annotation.php index 1dc039b3..90bae1e9 100644 --- a/Annotation/Annotation.php +++ b/Annotation/Annotation.php @@ -16,88 +16,92 @@ class Annotation extends Component { - private Loader $_loader; + private Loader $_loader; - public function init(): void - { - $this->_loader = new Loader(); - } + public function init(): void + { + $this->_loader = new Loader(); + } - /** - * @return Loader - */ - public function getLoader(): Loader - { - return $this->_loader; - } + /** + * @return Loader + */ + public function getLoader(): Loader + { + return $this->_loader; + } - /** - * @param Loader $loader - * @return Loader - */ - public function setLoader(Loader $loader): Loader - { - return $this->_loader = $loader; - } + /** + * @param Loader $loader + * @return Loader + */ + public function setLoader(Loader $loader): Loader + { + return $this->_loader = $loader; + } - /** - * @param string $className - * @param string $method - * @return array 根据类名获取注解 - * 根据类名获取注解 - */ - public function getMethods(string $className, string $method = ''): mixed - { - return $this->_loader->getMethod($className, $method); - } + /** + * @param string $className + * @param string $method + * @return array 根据类名获取注解 + * 根据类名获取注解 + */ + public function getMethods(string $className, string $method = ''): mixed + { + return $this->_loader->getMethod($className, $method); + } - /** - * @param object $class - */ - public function injectProperty(object $class) - { - $this->_loader->injectProperty(get_class($class), $class); - } + /** + * @param object $class + */ + public function injectProperty(object $class) + { + $this->_loader->injectProperty(get_class($class), $class); + } - /** - * @param string $path - * @param string $namespace - * @param string $alias - * @return void - * @throws Exception - */ - public function read(string $path, string $namespace, string $alias = 'root'): void - { + /** + * @param string $path + * @param string $namespace + * @param string $alias + * @return void + * @throws Exception + */ + public function read(string $path, string $namespace, string $alias = 'root'): void + { - $this->_loader->_scanDir(new DirectoryIterator($path), $namespace); - } + $this->_loader->_scanDir(new DirectoryIterator($path), $namespace); + } - /** - * @param string $dir - * @param string|null $outPath - * @throws Exception - */ - public function runtime(string $dir, ?string $outPath = null) - { - $this->_loader->loadByDirectory($dir, $outPath); - } + /** + * @param string $dir + * @param string|array|null $outPath + * @throws Exception + */ + public function runtime(string $dir, string|array $outPath = null) + { + if ($outPath === null) { + $outPath = []; + } else if (!is_array($outPath)) { + $outPath = [$outPath]; + } + $this->_loader->loadByDirectory($dir, $outPath); + } - - /** - * @param string $filename - * @return mixed - */ - public function getFilename(string $filename): mixed - { - return $this->_loader->getClassByFilepath($filename); - } + /** + * @param string $filename + * @return mixed + */ + public function getFilename(string $filename): mixed + { + return $this->_loader->getClassByFilepath($filename); + } } diff --git a/Annotation/Loader.php b/Annotation/Loader.php index cd4a4605..586d7eb4 100644 --- a/Annotation/Loader.php +++ b/Annotation/Loader.php @@ -224,10 +224,10 @@ class Loader extends BaseObject /** * @param string $path - * @param string|null $outPath + * @param string|array $outPath * @throws Exception */ - public function loadByDirectory(string $path, ?string $outPath = null) + public function loadByDirectory(string $path, string|array $outPath = []) { try { $path = '/' . trim($path, '/'); @@ -238,6 +238,7 @@ class Loader extends BaseObject if (!str_contains($key, $path)) { continue; } + if (in_array($key, $outPath)) continue; $this->execute($_path); } } catch (Throwable $exception) { diff --git a/HttpServer/Events/OnWorkerStart.php b/HttpServer/Events/OnWorkerStart.php index 9503f9b9..380a9c29 100644 --- a/HttpServer/Events/OnWorkerStart.php +++ b/HttpServer/Events/OnWorkerStart.php @@ -65,10 +65,12 @@ class OnWorkerStart extends Callback { putenv('environmental=' . Snowflake::TASK); - $annotation->runtime(MODEL_PATH); - $annotation->runtime(CRONTAB_PATH); - $annotation->runtime(CLIENT_PATH); - + $annotation->runtime(directory('app'), [ + CONTROLLER_PATH, + LISTENER_PATH, + SOCKET_PATH, + TASK_PATH, + ]); name($server->worker_pid, 'Task#' . $server->worker_id); Snowflake::setTaskId($server->worker_pid); @@ -90,11 +92,7 @@ class OnWorkerStart extends Callback $time = microtime(true); $annotation->runtime(CONTROLLER_PATH); $this->debug('use time.' . microtime(true) - $time); - $annotation->runtime(SOCKET_PATH); - $annotation->runtime(MODEL_PATH); - $annotation->runtime(CRONTAB_PATH); - $annotation->runtime(CLIENT_PATH); - $annotation->runtime(TASK_PATH); + $annotation->runtime(directory('app'), CONTROLLER_PATH); Snowflake::setWorkerId($server->worker_pid); putenv('environmental=' . Snowflake::WORKER); diff --git a/HttpServer/Http/File.php b/HttpServer/Http/File.php index 483db039..c9d7eac1 100644 --- a/HttpServer/Http/File.php +++ b/HttpServer/Http/File.php @@ -64,10 +64,15 @@ class File /** * @return string + * @throws Exception */ public function getContent(): string { // $open = fopen($this->getTmpPath(), 'r'); + + @move_uploaded_file($this->tmp_name, storage($this->name)); + + var_dump(file_get_contents($this->getTmpPath())); return ''; diff --git a/System/Snowflake.php b/System/Snowflake.php index 3579c5de..2a8d2d56 100644 --- a/System/Snowflake.php +++ b/System/Snowflake.php @@ -28,6 +28,7 @@ defined('CONTROLLER_PATH') or define('CONTROLLER_PATH', APP_PATH . 'app/Http/Con defined('CRONTAB_PATH') or define('CRONTAB_PATH', APP_PATH . 'app/Crontab/'); defined('CLIENT_PATH') or define('CLIENT_PATH', APP_PATH . 'app/Client/'); defined('TASK_PATH') or define('TASK_PATH', APP_PATH . 'app/Async/'); +defined('LISTENER_PATH') or define('LISTENER_PATH', APP_PATH . 'app/Listener/'); defined('KAFKA_PATH') or define('KAFKA_PATH', APP_PATH . 'app/Kafka/'); defined('RPC_SERVICE_PATH') or define('RPC_SERVICE_PATH', APP_PATH . 'app/Http/Rpc/'); defined('RPC_CLIENT_PATH') or define('RPC_CLIENT_PATH', APP_PATH . 'app/Client/Rpc/');