了解Laravel路由中的一行代码

时间:2014-09-03 03:24:28

标签: php oop laravel routing laravel-routing

在学习了程序之后,我试图在PHP中学习OOP,在学习了一些理论后,我试图用它来研究Laravel框架的使用。 我在我的书中找到了这部分代码,用于路由,但我无法在OOP中理解它。

如果我没有错,第一部分在我看来是一种静态的方法'路线'上课,但后来我找到了第二部分 ' - 化合物其中(' ID'' [0-9] +&#39);'这似乎是动态的,相对于一个实例,让我感到困惑。

有人可以帮我理解吗?

Route::get('cats/{id}', function($id){
return "Cat #$id";
})->where('id', '[0-9]+');

1 个答案:

答案 0 :(得分:4)

If I'm not wrong, the first part seems to me a static method of a 'Route' class,抱歉,你错了。实际上Laravel为每个组件提供了Facade类,此处Route是基础Facade类的Router。这就是Facade类的样子:

<?php namespace Illuminate\Support\Facades;

/**
 * @see \Illuminate\Routing\Router
 */
class Route extends Facade {

    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor() { return 'router'; }

}

您可能会注意到,它只包含一个方法,它返回包含该方法的original/underlying类名,实际上它是key名称,用于将该类添加到IoC中} 容器。所以,Laravel在场景后面,从Illuminate/Routing/Router.php容器中创建IoC类的实例并调用method,它可能看起来不清楚但是它有点棘手并且无法在此处详细回答,但您可以访问Laravel facade并获得更好的解释。

最后,Laravel调用get()类中的Router.php方法,它返回Route类/对象的实例和where方法然后使用方法链接(Route功能)调用PHP-5类,这就是全部。阅读课程的源代码,你会有更好的想法。

检查Illuminate\Support\Facades文件夹,您可以找到许多外观类,它们实际上是原始类/组件的包装器。另请查看Laravel文档中的IoC container,有必要清楚地了解它与Laravel框架一起使用。