【问题标题】:How is method call passed from `Routes` to `RoutesCollection`?方法调用如何从 `Routes` 传递到 `RoutesCollection`?
【发布时间】:2019-10-10 20:55:14
【问题描述】:

我正在尝试了解 Laravel 如何获取所有新的应用程序路由 at this line

$this->getFreshApplication()['router']->getRoutes()

当我转储$this->getFreshApplication()['router'] 时,我会找到Illuminate/Routing/Route 的一个实例:

此实例(及其特征)没有方法getRoutes。这是来自Illuminate/Routing/RouteCollection 的方法。

为什么方法在Route 实例上调用getRoutes() 最终在RouteCollection 上?我还检查了Route 中的魔术方法__get(),但调用getRoutes() 时不会引发它。

【问题讨论】:

    标签: php laravel-5


    【解决方案1】:

    我认为$this->getFreshApplication()['router'] 的正确类型是Illuminate\Routing\Router,而不是Illuminate/Routing/Route 实例。

    【讨论】:

    • 嗨,我添加了一个截图。我认为它是Illuminate\Routing\Router 的一个实例。如果不是单个实例,那还有什么?
    • 在您的问题中,您链接了 Route 类的文档。它与Router 类不同(注意最后的r)。路由器管理路由映射,因此具有路由集合属性以及getRoutes 方法。实际上返回的实例是一个路由器,而不是一个路由对象
    • 我认为您只是打开了错误的文档页面(Route 而不是 Router)并且没有在那里找到 get routes 方法,因为它在我链接的 Router 文档页面中
    猜你喜欢
    • 2019-09-29
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2015-08-14
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多