Websocket::class ]; /** * @param $name * @param $class */ public function register($name, $class) { $this->_classMap[$name] = $class; } /** * @throws ReflectionException */ public function registration_notes() { if (!is_array($this->path)) { return; } foreach ($this->path as $item) { $this->scanning($item); } } /** * @param string $path * @throws ReflectionException * @throws Exception */ protected function scanning($path = '') { if (empty($path)) { $path = rtrim($this->path, '/'); } foreach (glob($path . '/*') as $file) { if (is_dir($file)) { $this->scanning($path); } $explode = explode('/', $file); $class = str_replace('.php', '', end($explode)); $reflect = new ReflectionClass($this->namespace . $class); $methods = $reflect->getMethods(\ReflectionMethod::IS_PUBLIC); if (empty($methods) || !$reflect->isInstantiable()) { continue; } $this->resolve($reflect, $methods); } } /** * @param ReflectionClass $class * @param array $methods * @throws Exception */ public function resolve(ReflectionClass $class, array $methods) { throw new Exception('Undefined analytic function.'); } /** * @param $path * @param mixed ...$param * @return bool|mixed */ public function runWith($path, $param) { if (!$this->has($path)) { return null; } return call_user_func($this->_Scan_directory[$path], ...$param); } /** * @param $name * @param $callback */ public function push($name, $callback) { $this->_Scan_directory[$name] = $callback; } /** * @param $path * @return bool|mixed */ public function has($path) { return isset($this->_Scan_directory[$path]); } /** * @param $name * @return mixed|null * @throws ReflectionException * @throws NotFindClassException * @throws Exception */ public function __get($name) { if (isset($this->_classMap[$name])) { return Snowflake::createObject($this->_classMap[$name]); } return parent::__get($name); // TODO: Change the autogenerated stub } }