walkor / webman-framework

webman-framework
118 stars 61 forks source link

路由列表 #17

Closed tingfeng-key closed 2 years ago

tingfeng-key commented 2 years ago

如果要打印当前的路由列表目前没有办法实现,如果应该不是先调用Route::group,Route::$_instance属性会一直是空的,那么$_routes就会一直是空数组。想要查看当前的路由列表就没有办法处理了,不知在目前的情况下有没有其他办法?

tingfeng-key commented 2 years ago

另外,group方法里面每次都重新实例化$_instance,这个是因为什么呢?

public static function group($path, $callback)
    {
        static::$_groupPrefix = $path;
        $instance = static::$_instance = new static;
        static::$_collector->addGroup($path, $callback);
        static::$_instance = null;
        static::$_groupPrefix = '';
        return $instance;
    }
tingfeng-key commented 2 years ago

如果想在命令行中进行路由相关操作,如:php webman route:list,来查看当前应用的路由,尝试后卡在这个方法里:

public static function convertToCallable($path, $callback)
    {
        if (\is_string($callback) && \strpos($callback, '@')) {
            $callback = \explode('@', $callback, 2);
        }

        if (\is_array($callback)) {
            $callback = \array_values($callback);
            if (isset($callback[1]) && \is_string($callback[0]) && \class_exists($callback[0])) {
                $callback = [App::container()->get($callback[0]), $callback[1]];
            }
        }

        if (!\is_callable($callback)) {
            echo "Route set to $path is not callable\n";
            return false;
        }

        return $callback;
    }

App类必须实列化,依赖注入的问题

tingfeng-key commented 2 years ago

20 #19